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, а не на границах рун (кодовых точек 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

Spec-Zone.ru

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