欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言字符串常見操作的使用匯總

 更新時間:2022年04月19日 14:40:29   作者:隱姓埋名4869  
這篇文章主要為大家總結(jié)了Go語言中常見的幾種字符串操作,例如:位置索引、替換、統(tǒng)計次數(shù)等,文中的示例代碼講解詳細,感興趣的可以了解一下

1. 字節(jié)數(shù)組

字節(jié)與字符的區(qū)別

  • 字節(jié)(Byte) 是計量單位,表示數(shù)據(jù)量多少,是計算機信息技術(shù)用于計量存儲容量的一種計量單位,通常情況下一字節(jié)等于八位
  • 字符(Character) 是計算機中使用的字母、數(shù)字、字和符號,比如'A'、'B'、'$'、'&'等
  • 一般在英文狀態(tài)下一個字母或字符占用一個字節(jié),一個漢字用兩個字節(jié)表示
  • 通俗點來說,人的語言就是字符,而字節(jié)是機器的語言

示例

 package main

import "fmt"

func main() {
	var (
		str1 = "hello"
		str2 = "world"
	)
	str3 := str1 + " " + str2

	//字符串轉(zhuǎn)換成字節(jié)數(shù)組
	tmp := []byte(str3)
	fmt.Printf("數(shù)據(jù): %s,長度: %d,數(shù)據(jù)類型: %T\n", str3, len(str3), str3)
	fmt.Println("字節(jié)數(shù)組:", tmp)
	fmt.Printf("數(shù)據(jù): %s,長度: %d,數(shù)據(jù)類型: %T\n", tmp, len(tmp), tmp)

	//字節(jié)數(shù)組轉(zhuǎn)字符串
	fmt.Println("字節(jié)數(shù)組轉(zhuǎn)字符串:", string(tmp))

	//反轉(zhuǎn)函數(shù)調(diào)用
	fmt.Println("反轉(zhuǎn): ", Reverse(str3))
}

//反轉(zhuǎn)函數(shù)
func Reverse(str string) string {
	var (
		result string
		leng   int = len(str)
	)
	for i := 0; i < leng; i++ {
		//sprintf轉(zhuǎn)換數(shù)據(jù)類型為string,使用+進行拼接
		result = result + fmt.Sprintf("%c", str[leng-i-1])
	}
	return result
}

輸出結(jié)果如下

數(shù)據(jù): hello world,長度: 11,數(shù)據(jù)類型: string
字節(jié)數(shù)組: [104 101 108 108 111 32 119 111 114 108 100]
數(shù)據(jù): hello world,長度: 11,數(shù)據(jù)類型: []uint8
字節(jié)數(shù)組轉(zhuǎn)字符串: hello world
反轉(zhuǎn):  dlrow olleh

Sprintf的作用

package main

import "fmt"

func main() {
	var a = 88
	fmt.Printf("a的數(shù)值: %d , 類型: %T\n", a, a)
	b := fmt.Sprintf("%d", a)
	fmt.Printf("b的數(shù)值: %s , 類型: %T\n", b, b)
}

輸出結(jié)果如下

a的數(shù)值: 88 , 類型: int
b的數(shù)值: 88 , 類型: string

2. 頭尾處理

prefix()函數(shù)判斷前綴

suffix()函數(shù)判斷后綴

使用prefix函數(shù)判斷URL是否是以http://為開頭,如果不是,則加上http://使用suffix函數(shù)判斷路徑是否以/結(jié)尾,如果不是,則加上/為結(jié)尾

package main

import (
	"fmt"
	"strings"
)

func main() {
	var (
		url  string
		path string
	)

	fmt.Println("請輸入URL和路徑:")
	fmt.Scanf("%s%s", &url, &path)
	fmt.Printf("URL: %s\n", 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 {
	//判斷是否以/結(jié)尾,返回布爾類型賦予result
	result := strings.HasSuffix(path, "/")
	if !result {
		path = fmt.Sprintf("%s/", path)
	}
	return path
}

終端輸入如下:

PS D:\goproject\src\test\main> go run .\main.go
請輸入URL和路徑:
www.google.com /opt/conf/k8s
URL: http://www.google.com
路徑: /opt/conf/k8s/

3. 位置索引

Index()函數(shù)判斷出現(xiàn)在前面的位置

LastIndex()函數(shù)判斷出現(xiàn)在末尾的位置

判斷子字符串在字符串中首次出現(xiàn)的位置和在末尾出現(xiàn)的位置

package main

import (
	"fmt"
	"strings"
)

func main() {
	var (
		a   = "abbaabcddccd"
		str = "cd"
	)

	//判斷str在a中首次出現(xiàn)的位置
	head := strings.Index(a, str)
	tail := strings.LastIndex(a, str)
	fmt.Printf("首次出現(xiàn)的位置:%d\n最后出現(xiàn)的位置:%d\n", head, tail)
}

輸出結(jié)果如下

首次出現(xiàn)的位置:6
最后出現(xiàn)的位置:10

4. 替換

Replace()函數(shù)格式如下:

Replace(原字符串,原字段,新字符串,新字段,替換次數(shù)) -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("替換前: %v\n", a)
	fmt.Printf("全部替換后: %v\n", result)
	result1 := strings.Replace(a, "cd", "CD", 0)
	fmt.Printf("不進行替換: %v\n", result1)
}

輸出結(jié)果如下

替換前: abbaabcddccd
全部替換后: abbaabCDdcCD
不進行替換: abbaabcddccd

5. 統(tǒng)計次數(shù)

Count()函數(shù)統(tǒng)計次數(shù)

package main

import (
	"fmt"
	"strings"
)

func main() {
	var a = "abbcddcedsca"

	count := strings.Count(a, "cd")
	fmt.Printf("count: %v\n", count)
}

輸出結(jié)果如下

count: 1

6. 重復(fù)

Repeat()函數(shù)重復(fù)輸出多次

package main

import (
	"fmt"
	"strings"
)

func main() {
	var a = "加油~"

	result := strings.Repeat(a, 3)
	fmt.Printf("result: %v\n", result)
}

輸出結(jié)果如下

result: 加油~加油~加油~

7. 大小寫

ToUpper()函數(shù)轉(zhuǎn)換大寫

ToLower()函數(shù)轉(zhuǎn)換小寫

package main

import (
	"fmt"
	"strings"
)

func main() {
	var a = "hello"
	//轉(zhuǎn)換大寫
	result1 := strings.ToUpper(a)
	fmt.Printf("大寫: %v\n", result1)

	//把上面轉(zhuǎn)換的大寫給轉(zhuǎn)成小寫
	result2 := strings.ToLower(result1)
	fmt.Printf("小寫: %v\n", result2)

}

輸出結(jié)果如下

大寫: HELLO
小寫: hello

8. 去除字符

TrimSpace()函數(shù)去除空白字符

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))
}

輸出結(jié)果如下

長度: 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")
	//空格也需匹配刪除,直到?jīng)]有指定的字符可以匹配為止
	result3 := strings.TrimLeft(a, "this ")
	//從右往左刪除所有指定的字符,直到遇到不包含在內(nèi)的字符為止
	result4 := strings.TrimRight(a, "web")

	fmt.Println("從左往右刪除:", result2)
	fmt.Println("從左往右刪除,有空格:", result3)
	fmt.Println("從右往左刪除:", result4)
}

輸出結(jié)果如下

尾部去除: this is test 
從左往右刪除:  is test web
從左往右刪除,有空格: est web
從右往左刪除: this is test 

9. 字符串切片處理

Fields()函數(shù)

Split()函數(shù)

默認識別空格進行切片處理

package main

import (
	"fmt"
	"strings"
)

func main() {
	var str string = "abc def ghi"
	//Fields函數(shù)默認識別的符號是空格
	result1 := strings.Fields(str)
	fmt.Printf("數(shù)據(jù)類型: %T , 數(shù)據(jù)格式: %v\n", result1, result1)
	for i := 0; i < len(result1); i++ {
		fmt.Println(result1[i])
	}
}

輸出結(jié)果如下

數(shù)據(jù)類型: []string , 數(shù)據(jù)格式: [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("數(shù)據(jù)類型: %T , 數(shù)據(jù)格式: %v\n", result, result)
}

輸出結(jié)果如下

數(shù)據(jù)類型: []string , 數(shù)據(jù)格式: [abc def ghi]

推薦使用Split()函數(shù)進行分隔

因為fields()函數(shù)默認只能識別空格,不能識別其他符號,而Split()函數(shù)則均可以識別

把切片按指定分隔符進行轉(zhuǎn)換成字符串

Join()函數(shù)

package main

import (
	"fmt"
	"strings"
)

func main() {
	//定義切片
	var slice = []string{"123", "456", "789"}
	fmt.Printf("切片: %v\n", slice)

	//切片轉(zhuǎn)換成字符串
	result := strings.Join(slice, ":")
	fmt.Printf("數(shù)據(jù)結(jié)構(gòu): %v , 數(shù)據(jù)類型: %T", result, result)
}

輸出結(jié)果如下

切片: [123 456 789]
數(shù)據(jù)結(jié)構(gòu): 123:456:789 , 數(shù)據(jù)類型: string

10. 數(shù)值處理

使用strconv.Itoa()函數(shù)將數(shù)值轉(zhuǎn)換成字符串

package main

import (
	"fmt"
	"strconv"
)

func main() {
	var num int = 12345678
	fmt.Printf("初始數(shù)據(jù)類型: %T\n", num)
	fmt.Printf("初始值: %d\n", num)

	//轉(zhuǎn)換成字符串
	result := strconv.Itoa(num)
	fmt.Printf("轉(zhuǎn)換后數(shù)據(jù)類型: %T\n", result)
	fmt.Printf("轉(zhuǎn)換后值為: %s", result)
}

輸出結(jié)果如下

初始數(shù)據(jù)類型: int
初始值: 12345678
轉(zhuǎn)換后數(shù)據(jù)類型: string
轉(zhuǎn)換后值為: 12345678

使用Sprintf()函數(shù)將整數(shù)轉(zhuǎn)換成字符串

package main

import (
	"fmt"
)

func main() {
	var num int = 12345678
	fmt.Printf("初始數(shù)據(jù)類型: %T\n", num)

	//使用Sprintf()轉(zhuǎn)換成字符串,可以實現(xiàn)多類型的轉(zhuǎn)換
	result := fmt.Sprintf("%d", num)
	fmt.Printf("轉(zhuǎn)換后數(shù)據(jù)類型:%T\n", result)
}

輸出結(jié)果如下

初始數(shù)據(jù)類型: int
轉(zhuǎn)換后數(shù)據(jù)類型:string

使用strconv.Atoi()函數(shù)進行字符串轉(zhuǎn)換整數(shù)

package main

import (
	"fmt"
	"strconv"
)

func main() {
	var str string = "12345678"

	//字符串轉(zhuǎn)整數(shù)
	result, err := strconv.Atoi(str)
	//如果有轉(zhuǎn)換過程中有錯,就拋出錯誤,沒有錯就返回數(shù)據(jù)類型
	if err == nil {
		fmt.Printf("數(shù)據(jù)類型: %T\n", result)
	} else {
		fmt.Println(err)
	}
}

輸出結(jié)果

數(shù)據(jù)類型: int 

到此這篇關(guān)于Go語言字符串常見操作的使用匯總的文章就介紹到這了,更多相關(guān)Go語言字符串操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • go語言實現(xiàn)抓取高清圖片

    go語言實現(xiàn)抓取高清圖片

    本文給大家分享的是使用go語言實現(xiàn)的抓取高清美女圖片的代碼,原理非常簡單,這里就不多廢話了,主要是看到很多小伙伴使用python實現(xiàn)的,心血來潮就用go寫了下,推薦給大家。
    2015-03-03
  • Gin框架自帶參數(shù)校驗的使用詳解

    Gin框架自帶參數(shù)校驗的使用詳解

    這篇文章主要為大家詳細介紹了如何使用Gin框架自帶的參數(shù)校驗,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解下
    2023-09-09
  • golang小游戲開發(fā)實戰(zhàn)之飛翔的小鳥

    golang小游戲開發(fā)實戰(zhàn)之飛翔的小鳥

    這篇文章主要給大家介紹了關(guān)于golang小游戲開發(fā)實戰(zhàn)之飛翔的小鳥的相關(guān)資料,,本文可以帶你你從零開始,一步一步的開發(fā)出這款小游戲,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • 三種Golang數(shù)組拷貝的實現(xiàn)方式與性能分析

    三種Golang數(shù)組拷貝的實現(xiàn)方式與性能分析

    在?Golang?中,有多種方式可以進行數(shù)組的拷貝,本文將對其中的三種方式進行性能分析,并比較它們的優(yōu)缺點,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06
  • Go 類型轉(zhuǎn)化工具庫cast函數(shù)詳解

    Go 類型轉(zhuǎn)化工具庫cast函數(shù)詳解

    這篇文章主要介紹了Go 類型轉(zhuǎn)化工具庫cast函數(shù)詳解,cast 是在Github上開源的工具庫,就像他的名字一樣,他為我們提供了非常便捷的類型轉(zhuǎn)化的方法
    2022-07-07
  • Golang實現(xiàn)文件夾的創(chuàng)建與刪除的方法詳解

    Golang實現(xiàn)文件夾的創(chuàng)建與刪除的方法詳解

    這篇文章主要介紹了如何利用Go語言實現(xiàn)對文件夾的常用操作:創(chuàng)建于刪除。文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • Goland IDEA項目多開設(shè)置方式

    Goland IDEA項目多開設(shè)置方式

    這篇文章主要介紹了Goland IDEA項目多開設(shè)置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • go語言題解LeetCode228匯總區(qū)間示例詳解

    go語言題解LeetCode228匯總區(qū)間示例詳解

    這篇文章主要為大家介紹了go語言題解LeetCode228匯總區(qū)間示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 一個Pod調(diào)度失敗后重新觸發(fā)調(diào)度的所有情況分析

    一個Pod調(diào)度失敗后重新觸發(fā)調(diào)度的所有情況分析

    這篇文章主要為大家介紹了一個Pod調(diào)度失敗后重新觸發(fā)調(diào)度的所有情況分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • go1.21中slog日志包用法入門

    go1.21中slog日志包用法入門

    go1.21中,slog這一被Go語言團隊精心設(shè)計的結(jié)構(gòu)化日志包正式落地,本文將帶領(lǐng)讀者上手slog,體會其與傳統(tǒng)log的差異,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧
    2023-09-09

最新評論