String 是由一連串 UTF-16 編碼的字元組成的。
var string1 = 'This is string.';
var string2 = "This is string too.";
var multiple_line_string1 = '''
"There is no one who loves pain itself, who seeks after it and wants to have it, simply because it is pain..."
''';
var multiple_line_string2 = """
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur ultrices,
leo eget malesuada vehicula, quam urna sodales mi, ut finibus.""";
我們可以使用單引號、雙引號、三個單引號以及三個雙引號定義字串。
我們可以將這四種方式分成兩類,單引號與雙引號是用來定義一般的字串。三個單引號以及三個雙引號則是用來定義多行的字串。
單引號 VS 雙引號
例如:
var string1 = 'It\'s my book';
var string2 = "It's my book";
var string3 = '"Hello", She said';
var string4 = "\"Hello\",She said";
三個單引號 VS 三個雙引號
如果要將兩個字串串接在一起,可以使用運算子 + 。
var concatenate_string = "Hello"+" World";
print(concatenate_string);
// Hello World
我們也可以直接將 + 省略,Dart 會將相鄰的字串串接起來,串接的符號 (+) 可以被隱藏起來。
var concatenate_string = "Hello" " World";
print(concatenate_string);
// Hello World
前面介紹,我們可以將兩個字串利用運算子 + 將兩個字串串接起來。
如果我們要串接的是一個數值呢?
print("Sum: 3 + 2 = " +
3 + 2);
上方的範例中,嘗試用運算子 + 串接字串與加法運算,但是運算子 + 後面必須要是字串,所以編譯器會發生錯誤。
可以將後方運算子用括弧包起來,在利用 int 類的 toString() 轉換成字串,如此就可以串接。
print("Sum: 3 + 2 = " +
(3 + 2).toString());
但,非得要這麼麻煩嗎?
在字串中,利用運算子 ${ },將運算子插入字串中,包在字串中的任何物件,都會被呼叫其 toString() 方法。
print("Sum: 3 + 2 = ${3+2}");
// Sum: 3 + 2 = 5
如果插入的物件沒有包含其他符號,可以忽略括弧。
var city = "Taipei";
print("I live in $city");
// I live in Taipei.
若將某些有其他意義的字元放在字串中,該字串有可能無法正確使用或顯示錯誤,如前面介紹的單引號 (') 及雙引號 ("),此時可以使用跳脫字元,避免字串因特殊字元而出錯。
print('It\'s my dog');
// It's my dog
print("This is \n new line");
//This is
// new line
除了跳脫字元外,也可以使用跳脫序列
print("This is \n new line");
//等同於
print("This is \x0A new line");
在字串中,可以使用 \u{UTF-16 Code} 插入 UTF-16 字元,
print("\u0024");
// $
前面的範例中,無論是字串插值、跳脫符號、跳脫序列、等等...,都是 String 直接做處理的,如果我們不想要 String 替我們自動處理這些特殊的字元,我們希望使用包含特殊字元的文字,我們該如何做呢?
print("Hello \tworld");
//Hello world
print(r"Hello \tworld");
//Hello \tworld
字串是由一連串的 UTF-16 的字元所組成的,我們可以使用 codeUnitAt 取得特定位置的 UTF-16 碼,或是使用 codeUnits 取得所有的UTF-16碼。
string = 'Dart';
string.codeUnitAt(0); // 68
string.codeUnits; // [68, 97, 114, 116]
Dart 的字串含有字串插值的功能,可以輕易的把物件與字串結合。
利用不同的符號來宣告字串,能夠減少多餘的跳脫符號。
由於字串是由 UTF-16 字元所組成,所以可以輕鬆地在字串中使用 UTF-16 的字元。