Ну это не глюк... Это скорее недо-документированные функции.
Есть некоторые неочевидные особенности в работе функции Splitter.SplitTextByDelimiter и ей подобных, а именно пресловутый QuoteStyle
Описание параметров QuoteStyle.None и QuoteStyle.Csv есть в инлайн-справке к функции Lines.FromText
- QuoteStyle.None: (по умолчанию) обработка специальных символов не требуется.
- QuoteStyle.Csv: обработка специальных символов как для формата CSV. Символ двойной кавычки используется для разграничения таких областей, пара символов двойной кавычки используется для представления одного символа двойной кавычки в пределах такой области.
В данном конкретном случае мы видим, что во второй строке у нас встречаются кавычки, причем всего ТРИ раза.
Получив на входе параметр QuoteStyle.Csv, PQ расценивает все, что встречается между кавычками, как единое целое, которое
делить не надо (как в формате CSV). То есть, указанный нами разделитель не ищется внутри текста, обрамленного в кавычки.
Вот она идет с начала текста, ищет разделители. Видит первую пару кавычек, которая вокруг
+. Не ищет там разделитель. А затем находит еще одну кавычку (3-ю), и от нее и до следующей тоже не ищет разделитель. Но следующей (4-й) нет, поэтому не ищет аж до конца строки.
При этом после сплита он убирает одинарные кавычки, а двойные заменяет на одинарные (опять же как при обработке CSV).
Это легко проверить, видно, что после сплита
клемма"+"-" превращается в
клемма+-, то есть без кавычек
Если поиграться с расстановкой кавычек в этом тексте, то можно всё это увидеть. Приложил файл - поставил красную кавычку в разные места
Так что да, если на входе не "чистый" CSV, то надо символ кавычек указывать "Нет", т.е. QuoteStyle.None