【Dart學習】--Dart之字串(String)的相關方法總結
阿新 • • 發佈:2020-11-13
-
字串定義
使用單引號或雙引號String a = "abcdefg"; String b = '12345';
- 建立多行字串,保留內在格式
使用三個單引號或三個雙引號 建立多行字串,保留內在格式,如換行和縮排等,裡面寫什麼輸出就是什麼。
- 三個單引號
String e = '''asd fdsd fff ''';
- 三個雙引號
String f = """ 1 2 3 4 """;
- 三個單引號
- 使用r建立原始raw字串(轉義字元等特殊字元會輸出出來,而不會自動被轉義)
String str1=r'Hello \n World' //(使用r建立原始字串,轉義字元不會被轉義,會直接輸出出來)
-
字串常用屬性
String a20 = "aaaa"; String a21 = "";
-
字串長度
print(a20.length);//4
-
是否為空
print(a20.isEmpty);//false
print(a21.isEmpty);//true
-
是否不為空
print(a20.isNotEmpty);//true
print(a21.isNotEmpty);//false
-
-
字串連線
String a = "abcdefg"; String b = '12345';
-
使用+號連線
String c = a + b; //使用+號連線 print(c); //abcdefg12345
-
使用相鄰空格符號連線,必須是兩個字串 不能是變數
String d = 'aaa' 'bbb'; //使用相鄰空格符號連線,必須是兩個字串 不能是變數 print(d); //aaabbb
-
-
字串模板,使用${} 將一個字串變數/表示式嵌入到另一個字串內
- 變數
String a1 = "aa"; String b1 = "bb${a1}bb"; print(b1); //bbaabb
-
表示式
String a1 = "aa"; String b2 = "bb${a1.toUpperCase()}bb"; print(b2); //bbAAbb
- 變數
-
字串與數字之間的轉換
- 字串轉int數值
int int1 = int.parse("33"); print(int1); //33
- 字串轉double數值
double d1 = double.parse("3.33"); print(d1); //3.33
- 數值轉字串
print(33.toString()); print(3.34.toString());
- 數值轉字串保留精度
print(3.12345.toStringAsFixed(3)); //保留精度 3.123
- 字串轉int數值
- 字串切割
String a2 = "aaabbb";
- 含頭不含尾
print(a2.substring(0, 2)); //aa 含頭不含尾
- 從指定index至末尾
print(a2.substring(3)); //bbb 從指定index至末尾
- 使用,分割,返回的是一個數組
String a5 = "a,d,d d,c,,";
List<String> a6 = a5.split(",");//使用,分割,返回的是一個數組
print(a6.length);//6
print(a6);//[a, d, d d, c, , ]; - 正則匹配,拆分字串
String strB = "abba"; print(strB.split(new RegExp(r"b*")));
- 查詢,並替換
String a8 = "a b,c"; String a7 = a8.splitMapJoin(",",//查詢“,”,用onMatch的返回值替換“,”用onNonMatch的返回值替換其他 onMatch: (Match match) { return "a"; }, onNonMatch: (String nonMatch) { return "b"; }); print(a7);//bab a b,c => bab
- 含頭不含尾
-
字串判斷 是否包含或以xxx開始結束等
String a3 = "aaabbbccc";
- 是否以‘xxx’開頭
print(a3.startsWith("aa")); //true print(a3.startsWith("aa", 3)); //false 從index=3開始判斷
- 是否以‘xxx’結尾
print(a3.endsWith("c")); //true
-
是否包含‘xxx’
print(a3.contains("ab")); //true print(a3.contains("ac")); //false
-
從某處開始是否包含‘xxx’
print(a3.contains("ab", 3)); //false 從index=3開始判斷
- 是否以‘xxx’開頭
- 字串替換
String a4 = "abcdeab";
- 替換全部符合條件的
print(a4.replaceAll("ab","cc"));//cccdecc 替換全部符合條件的
- 只替換第一個符合條件的
print(a4.replaceFirst("ab", "dd"));//ddcdeab 只替換第一個符合條件的
- 從index=3開始 替換第一個符合條件的
print(a4.replaceFirst("ab", "dd",3));//abcdedd 從index=3開始 替換第一個符合條件的
- 範圍替換 從0-3 含0不含3
print(a4.replaceRange(1, 3, "z"));// 範圍替換 從0-3 含0不含3
- 用方法返回值替換指定的字串
print(a4.replaceAllMapped("c", (Match match){//abyydeab 用方法返回值替換指定的字串 return "yy"; }));
- 從index=2開始 用方法返回值替換指定的字串
print(a4.replaceFirstMapped("b", (Match match){//abcdea333 從index=2開始 用方法返回值替換指定的字串 return "333"; },2));
- 替換全部符合條件的
- 字串查詢
String a9 = "aababcc1bc23";
- 獲取指定字元出現的位置
String str = 'Dartisans'; print(str.indexOf('art')); print(str.indexOf(new RegExp(r'[A-Z][a-z]'))); print(str.lastIndexOf('a')); print(str.lastIndexOf(new RegExp(r'a(r|n)')));
- 第一個符合條件的index
print(a9.indexOf("ab"));//1
- 從index=xx開始往後找
print(a9.indexOf("ab",2));//3 從index=2開始往後找
print(a9.indexOf("ab",4));//-1 從index=4開始往後找,找不到返回-1 - 從後往前找 返回第一個符合條件的index
print(a9.lastIndexOf("bc"));//8 從後往前找 返回第一個符合條件的index
- 從後往前找 從index=xxx開始找 返回第一個符合條件的index 找不到返回-1
print(a9.lastIndexOf("bc",3));//-1 從後往前找 從index=3開始找 返回第一個符合條件的index 找不到返回-1
print(a9.lastIndexOf("bc",7));//4 從後往前找 從index=7開始找 返回第一個符合條件的index
- 獲取指定字元出現的位置
- 轉換為大小寫
String a10 = "aaBBCc";
-
大寫轉小寫
print(a10.toLowerCase());//aabbcc
-
小寫轉大寫
print(a10.toUpperCase());//AABBCC
-
- 去除空格
String a11 = " aab bcc "; print(a11);// aab bcc
-
去除左右兩邊空格
print(a11.trim());//aab bcc 去除左右兩邊空格
-
去除右邊空格
print(a11.trimRight());// aab bcc 去除右邊空格
-
去除左邊空格
print(a11.trimLeft());// aab bcc //去除左邊空格
-
- 補齊長度 剩餘位使用指定字串替換
String a13 = "111";
-
剩餘3個位 預設使用""補齊
print(a13.padLeft(6));// 111 剩餘3個位 預設使用""補齊
-
剩餘3個位 指定使用"c
print(a13.padRight(6,"c")); //111ccc 剩餘3個位 指定使用"c"
-
剩餘3個位 每個位指定使用"dd" 替換後總長度不是6
print(a13.padRight(6,"dd")); //111dddddd 剩餘3個位 每個位指定使用"dd" 替換後總長度不是6
-
如果指定長度小於原字串長度 返回原字串
print(a13.padLeft(2,"e"));//111 如果指定長度小於原字串長度 返回原字串
-
- 字串先後比較
String a12 = "bbcc"; print(a12.compareTo("aaa"));//1 在ascii碼中 b>a print(a12.compareTo("bbcc"));//0 print(a12.compareTo("dd"));//-1 在ascii碼中 b<d
- 字串Unicode編碼
-
codeUnitAt(方法返回給定索引處的16位UTF-16程式碼單元)
-
-
-
- 語法
String.codeUnitAt(int index)
- 語法
-
-
-
- 引數
index
- 表示字串中的字元索引。 - 返回值
返回一個數字值。 - 示例
void main() { var res = "Good Day"; print("Code Unit of index 0 (G): ${res.codeUnitAt(0)}"); }
執行上面示例程式碼,得到以下結果 -
Code Unit of index 0 (G): 71
- 引數
-
-
- codeUnits(屬性返回給定字串的UTF-16程式碼單元列表)
- 語法
String.codeUnits
- 語法
- codeUnits(屬性返回給定字串的UTF-16程式碼單元列表)
-
-
- 示例
void main() { String str = "Hello"; print(str.codeUnits); }
執行上面示例程式碼,得到以下結果 -
[72, 101, 108, 108, 111]
- 示例
-
- 字串運算子(+、==、[])
- 字串變數
StringBuffer是可改變的,定義後還可以再修改
StringBuffer xiaomingSaid = new StringBuffer(); xiaomingSaid.write("All the world's a stage ... "); xiaomingSaid.write("And all the men and women merely players ..."); print(xiaomingSaid);
-
部分屬性
StringBuffer strBuf = new StringBuffer();
strBuf.write("Sow nothing, reap nothing.");-
返回字串緩衝區的雜湊碼
print(strBuf.hashCode);
-
字串緩衝區是否為空
print(strBuf.isEmpty);
-
字串緩衝區是否不為空
print(strBuf.isNotEmpty);
-
返回字串緩衝區累積內容的長度
print(strBuf.length);
-
返回物件執行時的型別
print(runtimeType);
-
-
-
- 常用方法
StringBuffer strBuf = new StringBuffer();- 新增字串到字串緩衝區內
strBuf.write("Do one thing at a time, and do well.");
- 返回字串緩衝區的所有內容
print(strBuf.toString());
- 清除字串緩衝區
strBuf.clear();
- 新增字串到字串緩衝區內
- 常用方法