Spec-Zone.ru › Dart 2

dart:core

Метод split

List<String> split(
  1. 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, а не по границам рун (точек кода Юникода):

// 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.18.5/dart-core/String/split.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API