<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
位元組與字元的區別
範例
package main import "fmt" func main() { var ( str1 = "hello" str2 = "world" ) str3 := str1 + " " + str2 //字串轉換成位元組陣列 tmp := []byte(str3) fmt.Printf("資料: %s,長度: %d,資料型別: %Tn", str3, len(str3), str3) fmt.Println("位元組陣列:", tmp) fmt.Printf("資料: %s,長度: %d,資料型別: %Tn", tmp, len(tmp), tmp) //位元組陣列轉字串 fmt.Println("位元組陣列轉字串:", string(tmp)) //反轉函數呼叫 fmt.Println("反轉: ", Reverse(str3)) } //反轉函數 func Reverse(str string) string { var ( result string leng int = len(str) ) for i := 0; i < leng; i++ { //sprintf轉換資料型別為string,使用+進行拼接 result = result + fmt.Sprintf("%c", str[leng-i-1]) } return result }
輸出結果如下
資料: hello world,長度: 11,資料型別: string
位元組陣列: [104 101 108 108 111 32 119 111 114 108 100]
資料: hello world,長度: 11,資料型別: []uint8
位元組陣列轉字串: hello world
反轉: dlrow olleh
Sprintf
的作用
package main import "fmt" func main() { var a = 88 fmt.Printf("a的數值: %d , 型別: %Tn", a, a) b := fmt.Sprintf("%d", a) fmt.Printf("b的數值: %s , 型別: %Tn", b, b) }
輸出結果如下
a的數值: 88 , 型別: int
b的數值: 88 , 型別: string
prefix()
函數判斷字首
suffix()
函數判斷字尾
使用prefix函數
判斷URL是否是以http://
為開頭,如果不是,則加上http://
使用suffix函數
判斷路徑是否以/
結尾,如果不是,則加上/
為結尾
package main import ( "fmt" "strings" ) func main() { var ( url string path string ) fmt.Println("請輸入URL和路徑:") fmt.Scanf("%s%s", &url, &path) fmt.Printf("URL: %sn", urlProcess(url)) fmt.Printf("路徑: %s", pathProcess(path)) } //字串頭部處理 func urlProcess(url string) string { //判斷是否以http://開頭,返回布林型別賦予result result := strings.HasPrefix(url, "http://") if !result { url = fmt.Sprintf("http://%s", url) } return url } //字串尾部處理 func pathProcess(path string) string { //判斷是否以/結尾,返回布林型別賦予result result := strings.HasSuffix(path, "/") if !result { path = fmt.Sprintf("%s/", path) } return path }
終端輸入如下:
PS D:goprojectsrctestmain> go run .main.go
請輸入URL和路徑:
www.google.com /opt/conf/k8s
URL: http://www.google.com
路徑: /opt/conf/k8s/
Index()
函數判斷出現在前面的位置
LastIndex()
函數判斷出現在末尾的位置
判斷子字串在字串中首次出現的位置和在末尾出現的位置
package main import ( "fmt" "strings" ) func main() { var ( a = "abbaabcddccd" str = "cd" ) //判斷str在a中首次出現的位置 head := strings.Index(a, str) tail := strings.LastIndex(a, str) fmt.Printf("首次出現的位置:%dn最後出現的位置:%dn", head, tail) }
輸出結果如下
首次出現的位置:6
最後出現的位置:10
Replace()函數
格式如下:
Replace(原字串,原欄位,新字串,新欄位,替換次數) -1表示全部替換,0表示不替換
package main import ( "fmt" "strings" ) func main() { var ( a = "abbaabcddccd" ) //把cd替換成CD,-1表示全部替換,0表示不替換 result := strings.Replace(a, "cd", "CD", -1) fmt.Printf("替換前: %vn", a) fmt.Printf("全部替換後: %vn", result) result1 := strings.Replace(a, "cd", "CD", 0) fmt.Printf("不進行替換: %vn", result1) }
輸出結果如下
替換前: abbaabcddccd
全部替換後: abbaabCDdcCD
不進行替換: abbaabcddccd
Count()
函數統計次數
package main import ( "fmt" "strings" ) func main() { var a = "abbcddcedsca" count := strings.Count(a, "cd") fmt.Printf("count: %vn", count) }
輸出結果如下
count: 1
Repeat()
函數重複輸出多次
package main import ( "fmt" "strings" ) func main() { var a = "加油~" result := strings.Repeat(a, 3) fmt.Printf("result: %vn", result) }
輸出結果如下
result: 加油~加油~加油~
ToUpper()
函數轉換大寫
ToLower()
函數轉換小寫
package main import ( "fmt" "strings" ) func main() { var a = "hello" //轉換大寫 result1 := strings.ToUpper(a) fmt.Printf("大寫: %vn", result1) //把上面轉換的大寫給轉成小寫 result2 := strings.ToLower(result1) fmt.Printf("小寫: %vn", result2) }
輸出結果如下
大寫: HELLO
小寫: hello
TrimSpace()
函數去除空白字元
TrimLeft()
從左往右刪除
TrimRight()
從右往左刪除
去除首尾空白字元
package main import ( "fmt" "strings" ) func main() { var a = " abc " fmt.Println("長度:", len(a)) //去除首位空白的字元 result1 := strings.TrimSpace(a) fmt.Println("去除首尾空白字元:", result1, "n長度:", len(result1)) }
輸出結果如下
長度: 5
去除首尾空白字元: abc
長度: 3
去除指定位置字元
package main import ( "fmt" "strings" ) func main() { var a = "this is test web" //去掉字串首尾部web字元 result1 := strings.Trim(a, "web") fmt.Println("尾部去除:", result1) //從左往右刪除所有指定的字元,直到遇到不包含在指定的字元為止 result2 := strings.TrimLeft(a, "this") //空格也需匹配刪除,直到沒有指定的字元可以匹配為止 result3 := strings.TrimLeft(a, "this ") //從右往左刪除所有指定的字元,直到遇到不包含在內的字元為止 result4 := strings.TrimRight(a, "web") fmt.Println("從左往右刪除:", result2) fmt.Println("從左往右刪除,有空格:", result3) fmt.Println("從右往左刪除:", result4) }
輸出結果如下
尾部去除: this is test
從左往右刪除: is test web
從左往右刪除,有空格: est web
從右往左刪除: this is test
Fields()
函數
Split()
函數
預設識別空格進行切片處理
package main import ( "fmt" "strings" ) func main() { var str string = "abc def ghi" //Fields函數預設識別的符號是空格 result1 := strings.Fields(str) fmt.Printf("資料型別: %T , 資料格式: %vn", result1, result1) for i := 0; i < len(result1); i++ { fmt.Println(result1[i]) } }
輸出結果如下
資料型別: []string , 資料格式: [abc def ghi]
abc
def
ghi
識別其他符號分隔成切片
package main import ( "fmt" "strings" ) func main() { var str string = "abc,def,ghi" //識別逗號進行分隔切片 result := strings.Split(str, ",") fmt.Printf("資料型別: %T , 資料格式: %vn", result, result) }
輸出結果如下
資料型別: []string , 資料格式: [abc def ghi]
推薦使用Split()函數
進行分隔
因為fields()函數
預設只能識別空格,不能識別其他符號,而Split()函數
則均可以識別
把切片按指定分隔符進行轉換成字串
Join()
函數
package main import ( "fmt" "strings" ) func main() { //定義切片 var slice = []string{"123", "456", "789"} fmt.Printf("切片: %vn", slice) //切片轉換成字串 result := strings.Join(slice, ":") fmt.Printf("資料結構: %v , 資料型別: %T", result, result) }
輸出結果如下
切片: [123 456 789]
資料結構: 123:456:789 , 資料型別: string
使用strconv.Itoa()
函數將數值轉換成字串
package main import ( "fmt" "strconv" ) func main() { var num int = 12345678 fmt.Printf("初始資料型別: %Tn", num) fmt.Printf("初始值: %dn", num) //轉換成字串 result := strconv.Itoa(num) fmt.Printf("轉換後資料型別: %Tn", result) fmt.Printf("轉換後值為: %s", result) }
輸出結果如下
初始資料型別: int
初始值: 12345678
轉換後資料型別: string
轉換後值為: 12345678
使用Sprintf()
函數將整數轉換成字串
package main import ( "fmt" ) func main() { var num int = 12345678 fmt.Printf("初始資料型別: %Tn", num) //使用Sprintf()轉換成字串,可以實現多型別的轉換 result := fmt.Sprintf("%d", num) fmt.Printf("轉換後資料型別:%Tn", result) }
輸出結果如下
初始資料型別: int
轉換後資料型別:string
使用strconv.Atoi()
函數進行字串轉換整數
package main import ( "fmt" "strconv" ) func main() { var str string = "12345678" //字串轉整數 result, err := strconv.Atoi(str) //如果有轉換過程中有錯,就丟擲錯誤,沒有錯就返回資料型別 if err == nil { fmt.Printf("資料型別: %Tn", result) } else { fmt.Println(err) } }
輸出結果
資料型別: int
到此這篇關於Go語言字串常見操作的使用匯總的文章就介紹到這了,更多相關Go語言字串操作內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45