.NET string.Split(string[]) логика множественного соответствия?
Может кто-нибудь объяснить логику, которую использует метод split?
Почему вы можете сопоставлять один и тот же шаблон несколько раз, если он заканчивается одинаково, а не если он начинается одинаково?
1 ответ
Он просматривает каждый индекс строки, подлежащей разделению (или каждую строку, подлежащую разделению на итерации после первого), и при каждом индексе пытается сопоставить элемент массива в порядке, в котором элементы появляются в массиве.,
В вашем первом примере строки "end\n\r\nbegin"
он пытается соответствовать (в этом порядке) "e"
, "en"
или же "n"
, "end"
или же "nd"
или же "d"
, "end\n"
или же "nd\n"
или же "d\n"
или же "\n"
, Он находит совпадение в этой последней проверке, разбивает строку и начинает снова.
На веревочке "endNNRRNNbegin"
с возможными совпадениями {"NN", "NNRR"}
это соответствует первому появлению "NN"
, производя "end","RRNNbegin"
, На втором проходе это соответствует "NN"
снова производя "end","RR","begin"
,
Если вы запустите этот алгоритм в оставшихся примерах, вы получите те же результаты, что и результат, который вы показываете.
Для получения дополнительной информации прочитайте раздел " Сравнение деталей " документации.