Splitter 2 - Splitter.SplitTextByWhitespace, или сплиттер, "делящий по белому пробелу"

#АнатомияФункций - Splitter.SplitTextByWhitespace



Всем привет!

Продолжаем разбор сплиттеров. Сегодняшний наш пациент

Splitter.SplitTextByWhitespace(optional quoteStyle as nullable number) as function


Делит строковое значение по whitespace character (пробельному символу) и имеет необязательный аргумент quoteStyle.

Обращаю на это внимание – пробельный символ – это не просто пробел (U+0020), это ещё и горизонтальная табуляция (U+0009), перенос строки (U+000A), возврат каретки (U+000D), неразрывный пробел (U+00A0) – всего 25 символов (по крайней мере в соответствии со стандартом Юникода).

Поэтому

Splitter.SplitTextByWhitespace()("мама мыла раму") //{"мама","мыла","раму"}

Splitter.SplitTextByWhitespace()("мама#(tab) мыла#(tab)раму") //{"мама","мыла","раму"}

Splitter.SplitTextByWhitespace()("мама#(00A0) мыла #(00A0)раму") //{"мама","мыла","раму"}

Splitter.SplitTextByWhitespace()("мама#(cr,lf)мыла#(lf,cr,tab)раму") //{"мама","мыла","раму"}


во всех случаях получаем одинаковый результат, причём обратите внимание – последовательность из двух и более пробельных символов рассматривается как один разрыв.



Теперь quoteStyle - представлен в двух вариантах: QuoteStyle.Csv и QuoteStyle.None. Первый используется по умолчанию, т.е.

Splitter.SplitTextByWhitespace()


Это то же самое, что

Splitter.SplitTextByWhitespace(QuoteStyle.Csv)




Рассмотрим разницу на примере:

Splitter.SplitTextByWhitespace()("ООО ""Рога и копыта"" Москва") //{"ООО","Рога и копыта","Москва"}

Splitter.SplitTextByWhitespace(QuoteStyle.None)("ООО ""Рога и копыта"" Москва") //{"ООО","""Рога","и","копыта""","Москва"}


Т.е. в случае QuoteStyle.Csv, когда встречается кавычка, весь последующий текст оставляется в неизменном виде, пока не встретится следующая кавычка; сами кавычки при этом удаляются.

А в случае QuoteStyle.None кавычки воспринимаются просто как один из символов и если между ними есть пробельные символы – по ним произойдет разделение.



Вот такой, на самом деле весьма полезный сплиттер, если понимать, что он делает и зачем нужен необязательный аргумент )))

Ну а как получить список из всех 25 пробельных символов, не зачитываясь стандартом Юникода, смотрите в обзоре на Ютубе

(и да, я в курсе, что можно было просто залезть в англоязычную википедию - но это скучно и без сплиттеров, вот ))))



Лайк, коммент, подписка приветствуются )))



Надеюсь, было полезно.

Всех благ!

@buchlotnik