parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

G_Z 28.10 01:26 / 28.10 04:32

Регистр может быть и важен и не важен. И получаем комбинаторный взрыв опций. Как уникалить прийдется решать каждый раз в своем коде, потому что сильно зависит от контекста задачи.
Поэтому решать задачу можно не только опцией с точным совпадением, но и дополнительным параметром с кодом, как у table.hash, в котором можно сделать нужные преобразования:
$tokens[^string.split[,;vu;token]{$token[^token.lower[]]^token.trim[]}]
В общем случае дубль — полное совпадение значения, как ключа у хеша.
Порядок слов сохранять или не принципиально?
Важен, конечно.
С ним ничего не меняется — элементы следуют в порядке появления.
Побеждает последний, как у hash'а.
Твой кейс крайне редкий.
Я нерепрезентативен. ©
Но это не значит, что такой необходимости нет.

Вот есть опция получения горизонтальной таблицы.
Как часто она нужна?
Несложно сделать транспонирование вертикальной таблицы.
Но опция есть.

Вот предложена опция возврата split'ом массива.
Зачем она?
Можно ведь в одну строку сделать $a[^array::create[^table.hash[…]]].

И так можно поставить под сомнение любой синтаксический сахар.
Выкинуть всё, оставить одни циклы, математику да резку строк.
Ну, чтобы «как в других языках».

Я лишь делюсь наблюдением, что в моих задачах необходимость обрезки пробельных символов и уникализация — частые операции, для которых я давно написал свои методы split и trim.