2014年4月3日 星期四

字串衝浪一:字串的特性

字串是由一連串依序集成的字元所組成的資料而成的,在程式中所處理的各式資料型別中,字串占有相當大比例的份量,從記錄、標題、訊息、內文等等,皆需要大量對於字串的操作及顯示。以下將介紹字串的主要用法及特性。



字串的宣告

宣告字串時,需以雙引號或單引號將字串值前後包夾,例:

//指定字串資料型別的宣告方式(雙引號 " 包夾 )
String text="This is a string";

//不指定字串資料型別的宣告方式(單引號 ' 包夾 )
var text = 'This is a string';

字串宣告時,在最後的分號出現前,皆會被視為是同一字串值。

例:
var string = 'Single line ''strings ' 'are written '
    'using matching single '
    'or double quotes.';
print(string);

輸出:
Single line strings are written using matching single or double quotes.

斷行/多行

若要宣告有斷行的字串,可以使用代表斷行的跳脫字元 '\n'。

例:
var multiline = "line1\nline2\nline3";
print(multiline);
輸出:
line1
line2
line3

或用連續三個單/雙引號包夾分行的字串值。

例:
var multiline = """line1
line2
line3""";
print(multiline);

輸出:
line1
line2
line3


字串中的引號處理


用單引號包夾的字串中若有單引號,需在字串中的單引號前加上反斜線,或是直接改用雙引號包夾字串。

例:
var text = 'You can\'t change string after created.';
var text = "You can't change string after created.";


用雙引號包夾的字串中若有雙引號,需在字串中的雙引號前加上反斜線,或是直接用單引號包夾字串。

例:
var string = "To programmatically generate a string, you can use \"StringBuffer\".";
var string = 'To programmatically generate a string, you can use "StringBuffer".';



字元的讀取

由於字串是連續的字元儲存在一起的資料區塊,所以可以將字串看成是一連串字元列表的集合,於是可以用索引值的的方式讀取字串中的個別字元,而其有效的索引值是由 0 為始至字串長度值-1為止:

例:
//宣告一內有26字母的字串
var alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//以索引值取得個別的字元
print(alphabets[3] + alphabets[0] + alphabets[17] + alphabets[19]);
//最後一個字元的索引值是字串長度值-1
print(alphabets[alphabets.length-1]);
輸出:
DART
Z


字串編碼

Dart 中的字串是以 UTF-16 為編碼,故能相容於全世界所有的語言編碼,對於中文也能有完整的支援囉

var chineseText="Dart 支援 UTF-16編碼,中文也能通";

String 類別

關於 String 還有更多的操作技巧,可以參考 Dart API 中的 <String 類別> 以獲得更多有用的資訊,我也將會在之後的字串衝浪系列文裡,專文討論和 String 類別相關的使用方法。

沒有留言:

張貼留言