абстрактный метод split
- Pattern pattern
Разбивает строку по совпадениям с pattern и возвращает список подстрок.
Находит все совпадения с pattern в этой строке, используя Pattern.allMatches, и возвращает список подстрок между совпадениями, перед первым совпадением и после последнего совпадения.
const string = 'Hello world!';
final splitted = string.split(' ');
print(splitted); // [Hello, world!]; Если шаблон вообще не совпадает с этой строкой, результатом всегда будет список, содержащий только исходную строку.
Если pattern является String, то всегда выполняется следующее:
string.split(pattern).join(pattern) == string
Если первое совпадение — пустое совпадение в начале строки, пустая подстрока перед ним не включается в результат. Если последнее совпадение — пустое совпадение в конце строки, пустая подстрока после него не включается в результат. Если совпадение пустое и непосредственно следует за предыдущим совпадением (начинается в позиции, где закончилось предыдущее совпадение), пустая подстрока между ними не включается в результат.
const string = 'abba'; final re = RegExp(r'b*'); // re.allMatches(string) will find four matches: // * empty match before first "a". // * match of "bb" // * empty match after "bb", before second "a" // * empty match after second "a". print(string.split(re)); // [a, a]
Непустое совпадение в начале или конце строки либо после другого совпадения не обрабатывается особым образом и приводит к появлению пустых подстрок в результате:
const string = 'abbaa';
final splitted = string.split('a'); // ['', 'bb', '', ''] Если эта строка пустая, результатом будет пустой список, если pattern совпадает с пустой строкой, поскольку пустые строки до и после первого и последнего пустого совпадения не включаются. (Если шаблон не совпадает, результат по-прежнему будет списком, содержащим исходную пустую строку [""].)
const string = '';
print(string.split('')); // []
print(string.split('a')); // [] Разбиение с пустым шаблоном разделяет строку на строки, содержащие по одной кодовой единице.
const string = 'Pub';
print(string.split('')); // [P, u, b]
// Same as:
var codeUnitStrings = [
for (final unit in string.codeUnits) String.fromCharCode(unit)
];
print(codeUnitStrings); // [P, u, b] Разбиение выполняется на границах кодовых единиц UTF-16, а не на границах рун (кодовых точек Unicode):
// String made up of two code units, but one rune.
const string = '\u{1D11E}';
final splitted = string.split('');
print(splitted); // ['\ud834', '\udd1e'] - 2 unpaired surrogate values Чтобы получить список строк, содержащих отдельные руны строки, не следует использовать split. Вместо этого можно получить строку для каждой руны следующим образом:
const string = '\u{1F642}';
for (final rune in string.runes) {
print(String.fromCharCode(rune));
} Реализация
List<String> split(Pattern pattern);
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-core/String/split.html