Класс String
Последовательность кодовых единиц UTF-16.
Строки в основном используются для представления текста. Один символ может быть представлен несколькими кодовыми точками, каждая кодовая точка состоит из одной или двух кодовых единиц. Например, символ флага Папуа-Новой Гвинеи требует четырех кодовых единиц для представления двух кодовых точек, но должен обрабатываться как один символ: «🇵🇬». Платформы, которые не поддерживают символ флага, могут отображать вместо него буквы «PG». Если кодовые точки поменяны местами, вместо этого отображается флаг Гваделупы «🇬🇵» («GP»).
Строка может быть одиночной или многострочной. Строки с одной строкой записываются с использованием соответствующих одинарных или двойных кавычек, а многострочные строки записываются с использованием тройных кавычек. Ниже приведены все допустимые строки Dart:
'Single quotes'; "Double quotes"; 'Double quotes in "single" quotes'; "Single quotes in 'double' quotes"; '''A multiline string'''; """ Another multiline string""";
Строки являются неизменяемыми. Хотя вы не можете изменить строку, вы можете выполнить операцию над строкой, которая создает новую строку:
const string = 'Dart is fun'; print(string.substring(0, 4)); // 'Dart'
Вы можете использовать оператор плюс (+) для конкатенации строк:
const string = 'Dart ' + 'is ' + 'fun!'; print(string); // 'Dart is fun!'
Смежные строковые литералы конкатенируются автоматически:
const string = 'Dart ' 'is ' 'fun!'; print(string); // 'Dart is fun!'
Вы можете использовать ${} для интерполяции значения выражений Dart в строках. Фигурные скобки можно опустить при оценке идентификаторов:
const string = 'dartlang';
print('$string has ${string.length} letters'); // dartlang has 8 letters Строка представлена последовательностью кодовых единиц Unicode UTF-16, доступных через члены codeUnitAt или codeUnits:
const string = 'Dart'; final firstCodeUnit = string.codeUnitAt(0); print(firstCodeUnit); // 68, aka U+0044, the code point for 'D'. final allCodeUnits = string.codeUnits; print(allCodeUnits); // [68, 97, 114, 116]
Представление отдельных кодовых единиц строки доступно через оператор индексации:
const string = 'Dart'; final charAtIndex = string[0]; print(charAtIndex); // 'D'
Символы строки закодированы в UTF-16. Декодирование UTF-16, которое объединяет пары суррогатов, даёт кодовые точки Unicode. Следуя аналогичной терминологии Go, Dart использует имя «rune» для целого числа, представляющего кодовую точку Unicode. Используйте свойство runes для получения рун строки:
const string = 'Dart'; final runes = string.runes.toList(); print(runes); // [68, 97, 114, 116]
Для символа вне базовой многоязычной плоскости (плоскость 0), состоящего из пары суррогатов, runes объединяет пару и возвращает единственное целое число. Например, символ Unicode для музыкальной G-лигатуры ('𝄞') со значением rune 0x1D11E состоит из пары суррогатов UTF-16: 0xD834 и 0xDD1E. С помощью codeUnits возвращается пара суррогатов, а с помощью runes возвращается их объединённое значение:
const clef = '\u{1D11E}';
for (final item in clef.codeUnits) {
print(item.toRadixString(16));
// d834
// dd1e
}
for (final item in clef.runes) {
print(item.toRadixString(16)); // 1d11e
} Класс String не может быть расширен или реализован. Попытка сделать это приводит к ошибке компиляции.
Другие ресурсы
- StringBuffer для эффективного пошагового построения строки.
- RegExp для работы с регулярными выражениями.
- Строки и регулярные выражения
- Реализованные типы
Конструкторы
- String.fromCharCode(int charCode) factory
- Выделяет новую строку, содержащую указанный
charCode. - String.fromCharCodes(Iterable<
int> charCodes, [int start = 0, int? end]) factory - Выделяет новую строку, содержащую указанные
charCodes. - String.fromEnvironment(String name, {String defaultValue = ""}) constfactory
- Строковое значение объявления среды
name.
Свойства
- codeUnits → List<
int> только для чтения - Неизменяемый список кодовых единиц UTF-16 этой строки.
- hashCode → int только для чтения, переопределённый
- Хэш-код, полученный из кодовых единиц строки.
- isEmpty → bool только для чтения
- Является ли эта строка пустой.
- isNotEmpty → bool только для чтения
- Не является ли эта строка пустой.
- length → int только для чтения
- Длина строки.
- runes → Runes только для чтения
- Iterable кодовых точек Unicode этой строки.
- runtimeType → Type только для чтения, унаследованно
- Представление типа объекта во время выполнения.
Методы
- allMatches(
Строка string, [int start = 0]) → Iterable< Совпадение> inherited - Сопоставляет этот шаблон с строкой многократно.
- codeUnitAt(
int index) → int - Возвращает 16-битный код символа UTF-16 в заданной
index. - compareTo(
Строка other) → int override - Сравнивает эту строку с
other. - contains(
Шаблон other, [int startIndex = 0]) → bool - Содержит ли эта строка совпадение с
other. - endsWith(
Строка other) → bool - Заканчивается ли эта строка на
other. - indexOf(
Шаблон pattern, [int start = 0]) → int - Возвращает позицию первого совпадения
patternв этой строке, начиная сstart, включительно: - lastIndexOf(
Шаблон pattern, [int? start]) → int - Начальная позиция последнего совпадения
patternв этой строке. - matchAsPrefix(
Строка string, [int start = 0]) → Совпадение? inherited - Сопоставляет этот шаблон с началом
string. - noSuchMethod(
Вызов invocation) → dynamic inherited - Вызывается при обращении к несуществующему методу или свойству.
- padLeft(
int width, [Строка padding = ' ']) → Строка - Дополняет эту строку слева, если она короче
width. - padRight(
int width, [Строка padding = ' ']) → Строка - Дополняет эту строку справа, если она короче
width. - replaceAll(
Шаблон from, Строка replace) → Строка - Заменяет все подстроки, соответствующие
fromнаreplace. - replaceAllMapped(
Шаблон from, Строка replace(Совпадение match)) → Строка - Заменить все подстроки, соответствующие
fromна вычисленную строку. - replaceFirst(
Шаблон from, Строка to, [int startIndex = 0]) → Строка - Создает новую строку с первым вхождением
fromзаменённым наto. - replaceFirstMapped(
Шаблон from, Строка replace(Совпадение match), [int startIndex = 0]) → Строка - Заменить первое вхождение
fromв этой строке. - replaceRange(
int start, int? end, Строка replacement) → Строка - Заменяет подстроку от
startдоendнаreplacement. - split(
Шаблон pattern) → Список< Строка> - Разбивает строку по совпадениям с
patternи возвращает список подстрок. - splitMapJoin(
Шаблон pattern, {Строка onMatch(Совпадение)?, Строка onNonMatch(Строка)?}) → Строка - Разделяет строку, преобразует её части и объединяет их в новую строку.
- startsWith(
Шаблон pattern, [int index = 0]) → bool - Начинается ли эта строка с совпадения с
pattern. - substring(
int start, [int? end]) → Строка - Подстрока этой строки от
start, включительно, доend, исключая. - toLowerCase(
) → Строка - Преобразует все символы в этой строке в нижний регистр.
- toString(
) → Строка inherited - Строковое представление этого объекта.
- toUpperCase(
) → Строка - Преобразует все символы в этой строке в верхний регистр.
- trim(
) → Строка - Строка без начальных и конечных пробелов.
- trimLeft(
) → Строка - Строка без начальных пробелов.
- trimRight(
) → Строка - Строка без конечных пробелов.
Операторы
- operator *(
int times) → Строка - Создает новую строку, конкатенируя эту строку с собой заданное число раз.
- operator +(
Строка other) → Строка - Создает новую строку, конкатенируя эту строку с
other. - operator ==(
Объект other) → bool override - Является ли
otherStringс той же последовательностью кодовых единиц. - operator [](
int index) → Строка - Символ (как одиночная кодовая единица Строка) в заданной
index.
© 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-class.html