Loop через каждую линию, и проверить текущий «заголовок» с предыдущими.
Создайте метод, который выглядит примерно так (недействительный JS, просто псевдокод);
function isSameType(last, current) {
if (typeof last == 'numeric' && typeof current == 'numeric') {
return true; // 1, 2, 3, 4 etc.
}
if (last == 'a' && current == 'b') { //Improve here ;p
return true;
}
if (last == 'i' && current == 'ii') {
return true;
}
if (last == 'h' && current == 'i') {
return true; // This is an edgecase... Most likely I after H is the same type - but it might not be, you'll never know for sure
}
return false; //Its not caught - go deepar!
}
так с этой разметке вы будете иметь что-то, что вроде работает, но не является полностью водонепроницаемым ...
EDIT: Если это вся информация - вы можете просто остановить поиск, потому что его невозможно знаете, если I после H на самом деле уровень глубже или нет. Это просто невозможно.
РЕДАКТИРОВАТЬ 2: Пока он находится в формате A -> 1 -> I, он должен работать.
a. LEVEL 0
b. LEVEL 0
c. LEVEL 0
1. LEVEL 1
2. LEVEL 1
i. LEVEL 2
ii. LEVEL 2
3. LEVEL 1
i. LEVEL 2
e. LEVEL 0 <- this might be an issue - say the letter is V, you wouldn't know if it was level 1 alphabetical or roman (level 2) - Or maybe they went to "a" - in that case its probably level 3, and not level 1, because the A was already there in level 1. A lot of rules!
С правильным набором правил вы получите далеко. Но если они перескочат с уровня 3 (iv) до уровня 1 (v), вы можете столкнуться с проблемой. Но до сих пор, если вы видите «v», а предыдущий уровень был числовым (3), то он должен быть римским.
Ну, шаблон, который я вижу здесь, состоит в том, что он должен быть заключен в скобки «()». Простое регулярное выражение может помочь вам там –
Согласен, и я уже фиксирую эту информацию. Я беспокоюсь о порядке, получая 1, и я подключился к a – Jackie
А, правильно. Я бы определил метод, который проверяет «типы», чтобы вы могли видеть, будет ли уровень тем же или глубже - что-то вроде; if ('a' - это тот же уровень, что и «i»), где уровень «одинаковый» будет методом, который проверяет «число = то же (1, 2, 4 и т. д.), abcdefg одинаково, i, ii , iii vi, v iv - то же самое ". Но вы столкнетесь с проблемой, как только b c дойдет до h i j k .. Или V .. Или M .. Хм. Если вы не отслеживаете историю - зная, что «i» после «b» должно быть на уровне глубже, а «i» после «h» не должно быть. Вы понимаете, что я имею в виду? Извините, о чем я подумал –