^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
- Ответ, moko [M] 24.04.2018 12:12
- Ответ, G_Z [M] 24.04.2018 18:54