parser

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

 

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

^string:split[…] — неявный trim разделителя в конце?

G_Z 20.04.2018 02:45 / 20.04.2018 02:45

$path[/a/b]
<pre>^json:string[^path.split[/]]</pre>

$path[a/b/]
<pre>^json:string[^path.split[/]]</pre>
Почему-то в первом случае пустой сегмент в начале есть, а во втором — пустого сегмента в конце нет, будто конечный разделитель по умолчанию отрезается.

Из-за такого поведения нельзя просто разбить тот же путь на сегменты, обработать их и собрать заново перебором — конечные пустые сегменты будут потеряны.

И вырожденный случай:
$path[/]
<pre>^json:string[^path.split[/]]</pre>
,
в котором ожидаешь две пустых строки, а не ни одной.

То есть, пустота до первого разделителя и после последнего должна обрабатываться одинаково.
К исходном коде вижу string.split(…), видимо отбрасывание разделителя в конце — стандартное поведение C.

Понимаю, что «в лоб» изменять такое поведение нельзя.
Может добавить опцию a-la $.strict(true), которая бы отключала преобразования строки перед разбиением?
А то приходится делать разбиение, ища разделитель и отрезая куски строки в цикле.

  • ^string:split[…] — неявный trim разделителя в конце?, G_Z [M] 20.04.2018 02:45 / 20.04.2018 02:45