Счетчик списка дротиков показывает единицу при разбиении пустой строки - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь сделать базовый захват из текстового столбца в sqlite и обработать его в поле в модели, которая является List<String>. Если данные пустые, я хочу установить их как пустой список []. Однако, когда я делаю это по какой-то причине, я получаю список, который выглядит пустым, но на самом деле имеет длину 1. Чтобы воссоздать эту проблему, я упростил проблему с помощью следующего.

String stringList = '';
List<String> aList = [];
aList = stringList.split(',');
print(aList.length);

Почему этот отпечаток 1? Разве он не должен возвращать 0, поскольку в нем нет значений с запятой?

1 Ответ

0 голосов
/ 04 сентября 2018

Это должно вывести 1.

Когда вы разделяете строку на запятые, вы находите все позиции запятых в строке, а затем возвращаете список строк вокруг тех. Это включает строки до первого запятой и после последней запятой. В случае, когда ввод не содержит запятых, вы все равно найдете исходную строку.

Если бы ваш пример был:

String input = "451";
List<String> parts = input.split(",");
prtin(parts.length);

Вы, вероятно, ожидаете, что части будут в списке ["451"]. Это также происходит здесь, потому что функция split не различает пустые части от непустых.

Если строка содержит запятую, скажем, строку ",", при разбиении вы получите две части, в данном случае две пустые части. В общем случае вы получаете n + 1 часть для строки, содержащей n совпадений шаблона разделения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...