Dart?String字符串的常用方法總結(jié)概述
Flutter中字符串的一些常用方法
1 length :返回字符串的長(zhǎng)度。
length 是一個(gè)返回整數(shù)類(lèi)型的方法,用于獲取一個(gè)字符串的長(zhǎng)度,例如:
String str = "Hello World!"; int length = str.length; print(length); // 輸出: 12
在這個(gè)例子中, length 的值為12,因?yàn)檫@個(gè)字符串有12個(gè)字符。
2 isEmpty :判斷字符串是否為空。
isEmpty 是一個(gè)返回布爾值的方法,用于判斷一個(gè)字符串是否為空,例如:
String str = ""; bool isEmpty = str.isEmpty; print(isEmpty); // 輸出: true
在這個(gè)例子中, isEmpty 的值為true,因?yàn)檫@個(gè)字符串是空的。如果字符串不為空,則 isEmpty 的值為false。
isNotEmpty 是一個(gè)返回布爾值的方法,與 isEmpty 相反,用于判斷一個(gè)字符串是否不為空,例如:
String str = "Hello"; bool isNotEmpty = str.isNotEmpty; print(isNotEmpty); // 輸出: true
在這個(gè)例子中, isNotEmpty 的值為true,因?yàn)檫@個(gè)字符串不為空。如果字符串為空,則 isNotEmpty 的值為false。
3 toUpperCase() :將字符串中所有的小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母。
toUpperCase() 是一個(gè)方法,用于將一個(gè)字符串中所有的小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母,例如:
String str = "Hello World!"; String upperCaseStr = str.toUpperCase(); print(upperCaseStr); // 輸出: HELLO WORLD!
在這個(gè)例子中, toUpperCase() 方法將原字符串中所有的小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母,返回一個(gè)新的字符串 HELLO WORLD! 。原字符串 str 的值并沒(méi)有變化。
4 toLowerCase() :將字符串中所有的大寫(xiě)字母轉(zhuǎn)換為小寫(xiě)字母。
用于將一個(gè)字符串中所有的大寫(xiě)字母轉(zhuǎn)換為小寫(xiě)字母,例如:
String str = "Hello World!"; String lowerCaseStr = str.toLowerCase(); print(lowerCaseStr); // 輸出: hello world!
在這個(gè)例子中, toLowerCase() 方法將原字符串中所有的大寫(xiě)字母轉(zhuǎn)換為小寫(xiě)字母,返回一個(gè)新的字符串 hello world! 。原字符串 str 的值并沒(méi)有變化。
5 startsWith(pattern) :判斷字符串是否以指定的模式(pattern)開(kāi)頭。
用于判斷一個(gè)字符串是否以指定的模式(pattern)開(kāi)頭,返回一個(gè)布爾值。例如:
String str = "Hello World!"; bool startsWithHello = str.startsWith("Hello"); print(startsWithHello); // 輸出: true
在這個(gè)例子中, startsWith("Hello") 方法判斷字符串 str 是否以 "Hello" 開(kāi)頭,返回一個(gè)布爾值 true 。
6 endsWith(pattern) :判斷字符串是否以指定的模式(pattern)結(jié)尾。
用于判斷一個(gè)字符串是否以指定的模式(pattern)結(jié)尾,返回一個(gè)布爾值。例如:
String str = "Hello World!"; bool endsWithWorld = str.endsWith("World!"); print(endsWithWorld); // 輸出: true
在這個(gè)例子中, endsWith("World!") 方法判斷字符串 str 是否以 "World!" 結(jié)尾,返回一個(gè)布爾值 true 。
7 contains(pattern) :判斷字符串是否包含指定的模式(pattern)。
返回一個(gè)布爾值,用于判斷一個(gè)字符串是否包含指定的模式(pattern),例如:
String str = "Hello World!"; bool containsHello = str.contains("Hello"); print(containsHello); // 輸出: true
在這個(gè)例子中, contains("Hello") 方法判斷字符串 str 是否包含 "Hello" 這個(gè)模式,返回一個(gè)布爾值 true 。
8 replaceFirst(oldValue, newValue) :將字符串中第一個(gè)出現(xiàn)的oldValue替換為newValue。
用于將原字符串中第一個(gè)匹配的 oldValue 替換為 newValue ,返回一個(gè)新的字符串。例如:
String str = "Hello World!"; String newStr = str.replaceFirst("World", "Dart"); print(newStr); // 輸出: Hello Dart!
在這個(gè)例子中, replaceFirst("World", "Dart") 方法將原字符串中第一個(gè)匹配的 "World" 替換為 "Dart" ,返回一個(gè)新的字符串 "Hello Dart!" 。原字符串 str 的值并沒(méi)有變化。
9 replaceAll(oldValue, newValue) :將字符串中所有出現(xiàn)的oldValue替換為newValue。
用于將一個(gè)字符串中所有的匹配 oldValue 的部分替換為 newValue ,返回一個(gè)新的字符串。例如:
String str = "Hello World!"; String newStr = str.replaceAll("o", "e"); print(newStr); // 輸出: Helle Werld!
在這個(gè)例子中, replaceAll("o", "e") 方法將原字符串中所有的匹配 "o" 的部分替換為 "e" ,返回一個(gè)新的字符串 "Helle Werld!" 。原字符串 str 的值并沒(méi)有變化。
10 substring(startIndex, endIndex) :截取字符串的一部分,從startIndex開(kāi)始到endIndex結(jié)束。
用于獲取一個(gè)字符串中指定范圍內(nèi)的子串,返回一個(gè)新的字符串。其中, startIndex 表示子串的起始位置(包括該位置的字符), endIndex 表示子串的結(jié)束位置(不包括該位置的字符)。例如:
String str = "Hello World!"; String subStr = str.substring(0, 5); print(subStr); // 輸出: Hello
在這個(gè)例子中, substring(0, 5) 方法獲取字符串 str 中從位置0開(kāi)始到位置5(不包括位置5)的子串,返回一個(gè)新的字符串 "Hello" 。原字符串 str 的值并沒(méi)有變化。注意, substring 方法包括起始位置,不包括結(jié)束位置。如果省略 endIndex 參數(shù),則方法會(huì)從 startIndex 一直截取到字符串的末尾。
11 split(separator) :將字符串按照指定的分隔符(separator)拆分成一個(gè)字符串?dāng)?shù)組。
將一個(gè)字符串按照指定的分隔符(separator)分割成多個(gè)子字符串,返回一個(gè)字符串列表。例如:
String str = "Hello World!"; List<String> strList = str.split(" "); print(strList); // 輸出: [Hello, World!]
在這個(gè)例子中, split(" ") 方法將字符串 str 按照空格分隔成兩個(gè)子串 "Hello" 和 "World!" ,組成一個(gè)字符串列表 [Hello, World!] 返回。注意, split() 方法只能接受一個(gè)參數(shù),即分隔符。如果省略 separator 參數(shù),則默認(rèn)按照空格或制表符( \t )進(jìn)行分割。
12 trim() :去掉字符串首尾的空格。
用于去掉一個(gè)字符串兩端的空格(或其他空白字符),返回一個(gè)新的字符串。例如:
String str = " Hello World! "; String newStr = str.trim(); print(newStr); // 輸出: Hello World!
在這個(gè)例子中, trim() 方法去掉字符串 str 兩端的空格,返回一個(gè)新的字符串 "Hello World!" 。原字符串 str 的值并沒(méi)有變化。
13 compareTo(otherString)
比較兩個(gè)字符串的大小,返回一個(gè)整數(shù)值,如果當(dāng)前字符串比otherString小,則返回一個(gè)負(fù)數(shù),如果當(dāng)前字符串比otherString大,則返回一個(gè)正數(shù),如果當(dāng)前字符串和otherString相等,則返回0。 例如:
String str1 = "Hello"; String str2 = "World"; int result = str1.compareTo(str2); print(result); // 輸出: -15
在這個(gè)例子中, compareTo(str2) 方法比較字符串 str1 和 str2 的字典序,由于字符串 str1 小于字符串 str2 ,因此返回一個(gè)負(fù)數(shù) -15 。
14 codeUnitAt
用于獲取一個(gè)字符串中指定位置的字符的Unicode編碼,返回一個(gè)整數(shù)。其中, index 表示要獲取的字符的位置,從0開(kāi)始。例如:
String str = "Hello"; int codeUnit = str.codeUnitAt(1); print(codeUnit); // 輸出: 101,對(duì)應(yīng)字符 'e' 的 Unicode 編碼。
在這個(gè)例子中, codeUnitAt(1) 方法獲取字符串 str 中位置為1(即第二個(gè)字符)的字符的Unicode編碼,即字符 'e' 的Unicode編碼 101 (根據(jù)ASCII編碼表)。
15 indexOf
用于查找一個(gè)字符串中是否包含指定的子串。如果包含,則返回該子串在原字符串中第一次出現(xiàn)的位置(從左向右計(jì)數(shù),從0開(kāi)始)。如果不包含,則返回-1。其中, substring 表示要查找的子串, startIndex 表示查找的起始位置(從左向右計(jì)數(shù),從0開(kāi)始),可省略,默認(rèn)為0。例如:
String str = "Hello World!"; int index = str.indexOf("o"); print(index); // 輸出: 4
在這個(gè)例子中, indexOf("o") 方法查找字符串 str 中第一次出現(xiàn)的子串 "o" ,找到后返回其位置4。注意,該方法返回的是子串在原字符串中的位置,不是子串長(zhǎng)度。如果要查找多個(gè)子串,可以在 startIndex 參數(shù)中指定上一次查找結(jié)束的位置。如果子串不存在,則返回-1。
16 lastIndexOf
用于查找一個(gè)字符串中是否包含指定的子串。如果包含,則返回該子串在原字符串中最后一次出現(xiàn)的位置(從右向左計(jì)數(shù),從0開(kāi)始)。如果不包含,則返回-1。其中, substring 表示要查找的子串, startIndex 表示查找的起始位置(從右向左計(jì)數(shù),從0開(kāi)始),可省略,默認(rèn)為字符串末尾。例如:
String str = "Hello World!"; int index = str.lastIndexOf("o"); print(index); // 輸出: 7
在這個(gè)例子中, lastIndexOf("o") 方法查找字符串 str 中最后一次出現(xiàn)的子串 "o" ,找到后返回其位置7。注意,該方法返回的是子串在原字符串中的位置,不是子串長(zhǎng)度。如果要查找多個(gè)子串,可以在 startIndex 參數(shù)中指定上一次查找結(jié)束的位置。如果子串不存在,則返回-1。
17 padLeft
padLeft(width, [padding]) 是一個(gè)方法,用于在一個(gè)字符串左側(cè)填充指定數(shù)量的字符。其中, width 表示填充后字符串的總長(zhǎng)度, padding 表示用于填充的字符,可省略,默認(rèn)為空格字符。例如:
String str = "Hello"; String newStr = str.padLeft(10, "-"); print(newStr); // 輸出: -----Hello
在這個(gè)例子中, padLeft(10, "-") 方法將字符串 str 左側(cè)填充5個(gè) "-" 字符,直到長(zhǎng)度達(dá)到10,返回一個(gè)新的字符串 "-----Hello" 。如果原字符串的長(zhǎng)度已經(jīng)大于等于指定的長(zhǎng)度,則不會(huì)填充任何字符,直接返回原字符串。
18 padRight
padRight(width, [padding]) 是一個(gè)方法,用于在一個(gè)字符串右側(cè)填充指定數(shù)量的字符。其中, width 表示填充后字符串的總長(zhǎng)度, padding 表示用于填充的字符,可省略,默認(rèn)為空格字符。例如:
String str = "Hello"; String newStr = str.padRight(10, "-"); print(newStr); // 輸出: Hello-----
在這個(gè)例子中, padRight(10, "-") 方法將字符串 str 右側(cè)填充5個(gè) "-" 字符,直到長(zhǎng)度達(dá)到10,返回一個(gè)新的字符串 "Hello-----" 。如果原字符串的長(zhǎng)度已經(jīng)大于等于指定的長(zhǎng)度,則不會(huì)填充任何字符,直接返回原字符串。
19 replaceFirstMapped
replaceFirstMapped(from, Function matchFunction) 是一個(gè)方法,用于基于正則表達(dá)式匹配的方式替換一個(gè)字符串中第一次出現(xiàn)的符合條件的子串。其中, from 表示要替換的子串的正則表達(dá)式, matchFunction 表示匹配到子串后的替換邏輯。例如:
String str = "Hello World!"; String newStr = str.replaceFirstMapped(RegExp(r"(\w+) (\w+)"), (match) { return "${match.group(2)} ${match.group(1)}"; }); print(newStr); // 輸出: World! Hello
在這個(gè)例子中, replaceFirstMapped(RegExp(r"(\w+) (\w+)")) 方法基于正則表達(dá)式 (\w+) (\w+) 匹配字符串 str 中第一次出現(xiàn)的類(lèi)似 "Hello World" 的子串。匹配到后,執(zhí)行匹配函數(shù) (match) {...} 中的邏輯,將子串中的兩個(gè)單詞交換位置,返回一個(gè)新的字符串 "World! Hello" 。
注意,匹配函數(shù)中的 match 參數(shù)為 Match 類(lèi)型,表示匹配到的子串及其分組信息,可以通過(guò) match.group(n) 方法獲取第n個(gè)分組中的內(nèi)容。如果要替換所有匹配到的子串,可以使用 replaceAllMapped() 方法。
20 replaceRange
replaceRange(start, end, replacement) 是一個(gè)方法,用于替換一個(gè)字符串中指定范圍內(nèi)的子串。其中, start 表示要替換的子串的起始位置(從左向右計(jì)數(shù),從0開(kāi)始), end 表示要替換的子串的結(jié)束位置(從左向右計(jì)數(shù),從0開(kāi)始,不包含該位置的字符), replacement 表示替換后的字符串。例如:
String str = "Hello World!"; String newStr = str.replaceRange(0, 5, "Hi"); print(newStr); // 輸出: Hi World!
在這個(gè)例子中, replaceRange(0, 5, "Hi") 方法將字符串 str 中從位置0到位置5(不包含5)的子串 "Hello" 替換成 "Hi" ,返回一個(gè)新的字符串 "Hi World!" 。
注意,替換范圍包括起始位置和結(jié)束位置,如果要替換到字符串末尾,可以將 end 參數(shù)省略或賦值為字符串長(zhǎng)度。
21 splitMapJoin
splitMapJoin(pattern, {onMatch, onNonMatch}) 是一個(gè)方法,它可以將一個(gè)字符串按照指定的模式分割成若干子串,并將每個(gè)子串按照指定的方式處理后合并成一個(gè)新的字符串。其中, pattern 表示用于匹配子串的模式(可以是一個(gè)字符串、一個(gè)正則表達(dá)式或一個(gè)函數(shù)), onMatch 表示處理匹配的子串的函數(shù), onNonMatch 表示處理非匹配的子串的函數(shù),如果不指定,則使用默認(rèn)的處理函數(shù)。例如:
String str = "Hello World!"; String newStr = str.splitMapJoin("o", onMatch: (match) => "*", onNonMatch: (nonMatch) => nonMatch.toUpperCase()); print(newStr); // 輸出: HEL* W*RLD!
在這個(gè)例子中, splitMapJoin("o", onMatch: (match) => "*", onNonMatch: (nonMatch) => nonMatch.toUpperCase()) 方法將字符串 str 按照 "o" 字符分割成若干子串,匹配的子串會(huì)被替換成 "*" ,非匹配的子串會(huì)轉(zhuǎn)換成大寫(xiě)字母。最后將所有子串合并成一個(gè)新的字符串 "HEL* W*RLD!" 。
注意, onMatch 和 onNonMatch 參數(shù)可以是函數(shù),函數(shù)的參數(shù)是子串內(nèi)容,函數(shù)的返回值是處理后的子串內(nèi)容,也可以是字符串,表示直接替換子串內(nèi)容。如果使用正則表達(dá)式作為模式,可以使用 RegExp 類(lèi)創(chuàng)建正則表達(dá)式對(duì)象。
22 runes
Dart中的字符串是Unicode字符序列,每個(gè)Unicode字符對(duì)應(yīng)一個(gè)或多個(gè)UTF-16編碼的代碼單元。使用 runes 屬性可以獲取字符串中的Unicode字符序列,返回一個(gè)可迭代的Unicode字符序列。例如:
String str = "?? Hello Dart!"; Iterable<int> runes = str.runes; for (int rune in runes) { print(rune); }
在這個(gè)例子中,字符串 str 中包含了一個(gè)Unicode字符 ?? ,使用 runes 屬性獲取字符串的Unicode字符序列,并遍歷輸出每個(gè)字符的編碼值。
注意,使用 runes 屬性返回的是Unicode字符序列,每個(gè)字符對(duì)應(yīng)一個(gè) int 類(lèi)型的值,而不是UTF-16編碼的代碼單元序列。如果要將一個(gè)Unicode字符序列轉(zhuǎn)換成一個(gè)字符串,可以使用 String.fromCharCodes() 方法。
23 String.fromCharCodes
fromCharCodes() 是一個(gè)靜態(tài)方法,用于將一個(gè)或多個(gè)Unicode字符序列轉(zhuǎn)換成一個(gè)字符串。其中,Unicode字符序列可以是一個(gè) List 或一個(gè)可迭代對(duì)象,每個(gè)Unicode字符對(duì)應(yīng)一個(gè) int 類(lèi)型的數(shù)值。例如:
List<int> codes = [72, 101, 108, 108, 111]; // "Hello"的Unicode編碼 String str = String.fromCharCodes(codes); print(str); // 輸出: Hello
在這個(gè)例子中,將一個(gè)包含字符串 "Hello" 的Unicode編碼列表 [72, 101, 108, 108, 111] 轉(zhuǎn)換成一個(gè)字符串。
注意,使用 fromCharCodes() 方法時(shí)需要保證每個(gè)Unicode字符所對(duì)應(yīng)的編碼值都是有效的。如果編碼值無(wú)效,則該方法會(huì)拋出異常。
以上就是Dart String字符串的常用方法概述 整理了大概4000多字的詳細(xì)內(nèi)容,更多關(guān)于Dart String字符串方法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Flutter SizedBox布局組件Widget使用示例詳解
這篇文章主要為大家介紹了Flutter SizedBox布局組件Widget使用示例詳解2023-02-02Dart語(yǔ)法之變量聲明與數(shù)據(jù)類(lèi)型實(shí)例詳解
這篇文章主要為大家介紹了Dart語(yǔ)法之變量聲明與數(shù)據(jù)類(lèi)型實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Flutter入門(mén)學(xué)習(xí)Dart語(yǔ)言變量及基本使用概念
這篇文章主要為大家介紹了Flutter入門(mén)學(xué)習(xí)Dart語(yǔ)言變量及基本使用概念,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09谷歌Sky語(yǔ)言怎么樣?什么是Dart編程語(yǔ)言?
據(jù)外媒報(bào)道,在日前舉行Dart開(kāi)發(fā)者峰會(huì)上,谷歌對(duì)外正式展示了Android最新的開(kāi)發(fā)語(yǔ)言Sky,據(jù)悉,Sky本質(zhì)上就是谷歌自主的網(wǎng)頁(yè)開(kāi)發(fā)語(yǔ)言Dart.2015-05-05flutter中如何使用和擴(kuò)展ThemeData實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了flutter中如何使用和擴(kuò)展ThemeData實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Flutter學(xué)習(xí)筆記(三)RowColum布局
這篇文章主要介紹了Flutter學(xué)習(xí)筆記(三)RowColum布局,通俗來(lái)說(shuō),就是橫向布局和縱向布局的用法,需要的朋友可以參考下2023-04-04Flutter 語(yǔ)法進(jìn)階抽象類(lèi)和接口本質(zhì)區(qū)別詳解
這篇文章主要為大家介紹了Flutter 語(yǔ)法進(jìn)階抽象類(lèi)和接口本質(zhì)區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Flutter學(xué)習(xí)筆記(一)配置環(huán)境
這篇文章主要介紹了Flutter學(xué)習(xí)筆記(一)配置環(huán)境,Flutter?app使用了?Dart語(yǔ)言,源自于?Google,現(xiàn)在是?ECMA?的標(biāo)準(zhǔn),需要的朋友可以參考下2023-04-04