Флаттер / дротик: разбить строку по первому вхождению - PullRequest
1 голос
/ 25 февраля 2020

Есть ли способ разделить строку на некоторый символ , но только при первое вхождение ?

Пример : date: '2019:04:01' должен быть разбит на date и '2019:04:01'
Он также может выглядеть следующим образом date:'2019:04:01' или это date : '2019:04:01' и все еще должен быть разделен в date и '2019:04:01'

string.split(':');

Я пытался использовать метод split(). Но у него нет атрибута limit или чего-то в этом роде.

Ответы [ 4 ]

2 голосов
/ 26 февраля 2020

Вы никогда не сможете сделать все это, включая обрезку пробелов, с помощью команды split. Вам придется сделать это самостоятельно. Вот один из способов:

String s = "date   :   '2019:04:01'";
int idx = s.indexOf(":");
List parts = [s.substring(0,idx).trim(), s.substring(idx+1).trim()];
2 голосов
/ 25 февраля 2020

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

В вашем случае это будет что-то вроде:

var str = "date: '2019:04:01'";
var parts = str.split(':');
var prefix = parts[0].trim();                 // prefix: "date"
var date = parts.sublist(1).join(':').trim(); // date: "'2019:04:01'"

Методы обрезки удаляют все лишние пробелы вокруг первого двоеточия.

1 голос
/ 26 февраля 2020

Use RegExp

string.split(RegExp(r":\s*(?=')"));
  1. Обратите внимание на использование необработанной строки (строка с префиксом r)
  2. \s* соответствует нулю или более символ пробела
  3. (?=') соответствует ' без включения самого себя
1 голос
/ 25 февраля 2020

Просто используйте string.split(": "), и он вернет то, что вам нужно. Обратите внимание на пробел после двоеточия:

enter image description here

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