當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Dart String用法及代碼示例

dart:core 庫中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 代碼單元表示,可通過 codeUnitAtcodeUnits 成員訪問:

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 組合該代理對並返回一個整數。例如,符文值為 0x1D11E 的音樂劇 G-clef ('𝄞') 的 Unicode 字符由 UTF-16 代理對組成:0xD8340xDD1E。使用 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 類無法擴展或實現。嘗試這樣做會產生編譯時錯誤。

其他資源

實現的類型

Comparable<String> Pattern

相關用法


注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 String class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。