Класс String
Последовательность 16-битных кодовых единиц 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 используется название «руна» для целого числа, представляющего кодовую точку Unicode. Чтобы получить руны строки, используйте свойство runes:
const string = 'Dart'; final runes = string.runes.toList(); print(runes); // [68, 97, 114, 116]
Для символа за пределами базовой многоязычной плоскости (плоскость 0), представленного суррогатной парой, свойство runes объединяет пару и возвращает одно целое число. Например, кодовая точка Unicode музыкального символа «скрипичный ключ» ('𝄞') со значением руны 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 только для чтения
- Итерируемая коллекция кодовых точек Unicode этой строки.
- runtimeType → Type только для чтенияунаследовано
- Представление типа объекта во время выполнения.
Методы
- allMatches(
String string, [int start = 0]) → Iterable< Match> унаследовано - Многократно ищет соответствия этому шаблону в строке.
- codeUnitAt(
int index) → int - Возвращает 16-битную кодовую единицу UTF-16 по указанному
index. - compareTo(
String other) → int переопределено - Сравнивает эту строку с
other. - contains(
Pattern other, [int startIndex = 0]) → bool - Содержит ли эта строка соответствие
other. - endsWith(
String other) → bool - Оканчивается ли эта строка на
other. - indexOf(
Pattern pattern, [int start = 0]) → int - Возвращает позицию первого соответствия
patternв этой строке, начиная сstartвключительно: - lastIndexOf(
Pattern pattern, [int? start]) → int - Начальная позиция последнего соответствия
patternв этой строке. - matchAsPrefix(
String string, [int start = 0]) → Match? унаследовано - Ищет соответствие этому шаблону в начале
string. - noSuchMethod(
Invocation invocation) → dynamic унаследовано - Вызывается при обращении к несуществующему методу или свойству.
- padLeft(
int width, [String padding = ' ']) → String - Дополняет эту строку слева, если ее длина меньше
width. - padRight(
int width, [String padding = ' ']) → String - Дополняет эту строку справа, если ее длина меньше
width. - replaceAll(
Pattern from, String replace) → String - Заменяет все подстроки, соответствующие
from, наreplace. - replaceAllMapped(
Pattern from, String replace(Match match)) → String - Заменяет все подстроки, соответствующие
from, вычисляемой строкой. - replaceFirst(
Pattern from, String to, [int startIndex = 0]) → String - Создает новую строку, в которой первое вхождение
fromзаменено наto. - replaceFirstMapped(
Pattern from, String replace(Match match), [int startIndex = 0]) → String - Заменяет первое вхождение
fromв этой строке. - replaceRange(
int start, int? end, String replacement) → String - Заменяет подстроку от
startдоendнаreplacement. - split(
Pattern pattern) → List< String> - Разбивает строку в местах, соответствующих
pattern, и возвращает список подстрок. - splitMapJoin(
Pattern pattern, {String onMatch(Match)?, String onNonMatch(String)?}) → String - Разбивает строку, преобразует ее части и объединяет их в новую строку.
- startsWith(
Pattern pattern, [int index = 0]) → bool - Начинается ли эта строка с соответствия
pattern. - substring(
int start, [int? end]) → String - Подстрока этой строки от
startвключительно доendне включительно. - toLowerCase(
) → String - Преобразует все символы этой строки в нижний регистр.
- toString(
) → String унаследовано - Строковое представление этого объекта.
- toUpperCase(
) → String - Преобразует все символы этой строки в верхний регистр.
- trim(
) → String - Строка без начальных и конечных пробельных символов.
- trimLeft(
) → String - Строка без начальных пробельных символов.
- trimRight(
) → String - Строка без конечных пробельных символов.
Операторы
- operator *(
int times) → String - Создает новую строку, многократно объединяя эту строку с самой собой.
- operator +(
String other) → String - Создает новую строку, объединяя эту строку с
other. - operator ==(
Object other) → bool переопределено - Является ли
otherStringс той же последовательностью кодовых единиц. - operator [](
int index) → String - Символ (в виде String из одной кодовой единицы) по указанному
index.
© 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-class.html