.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",

Если вы запустите этот алгоритм в оставшихся примерах, вы получите те же результаты, что и результат, который вы показываете.

Для получения дополнительной информации прочитайте раздел " Сравнение деталей " документации.

Другие вопросы по тегам