天天看點

Go語言字元串處理

在平時的業務中經常需要對字元串進行處理,在此加以記錄,便于小夥伴查閱。

1、去掉字元串首尾空格

代碼如下:

str := "  12 34  "
	fmt.Println("原字元串:", str)
	fmt.Println("原字元串的長度:", len(str))
	s := strings.TrimSpace(str)
	fmt.Println("處理之後的字元串:", s)
	fmt.Println("處理之後的字元串長度:", len(s))
           

可以通過   strings.TrimSpace()  方法可以去掉字元串的首尾空格,運作結果如下:

Go語言字元串處理

2、去掉字元串首尾的特殊字元

代碼如下:

str1 := "#12#34#"
	fmt.Println(str1)
	s1 := strings.Trim(str1, "#")
	fmt.Println(s1)
           

用到的方法是:strings.Trim(s string, cutset string)

運作效果如下:

Go語言字元串處理

3、去掉字元串中所有的空格

代碼如下:

str:="  123   456  #789"
	fmt.Println("去掉空格之前的字元串長度為:", len(str),)
	fmt.Println("去掉空格之前的字元串内容為:", str)
	str=strings.ReplaceAll(str," ","")
	fmt.Println("去掉空格之後的字元串長度為:", len(str),)
	fmt.Println("去掉空格之後的字元串内容為:", str)
           

可以通過    strings.ReplaceAll(s, old, new string) string  去掉字元串中的所有空格。

運作效果如下:

Go語言字元串處理

4、綜合應用

字首表達式轉字尾表達式中對字元的處理:

如:  str2 := "89+(123-1) *50"     将數字與字元分隔保持成切片(數組),處理結果如:arr[0]=89, arr[1]=+, arr[2]=(  ...   arr[8]=50

代碼如下:

package main

import (
	"fmt"
	"strconv"
	"strings"
)
func main() {
	str2 := "89+(123-1) *50"
	str2 = strings.ReplaceAll(str2, " ", "") //将空格替換掉
	arr := strings.Split(str2, "") //将字元串轉換為切片
	resArray := make([]string, 0)
	res := ""
	for _, v := range arr {
		if isDigital(v) {  //如果連續的數字,依次連接配接
			res += v
			continue
		}
		//如果不是數字,且臨時結果不為空,将結果添加到切片中
		if res != "" {
			resArray = append(resArray, res)
		}
		res = v  //臨時結果儲存符合
		resArray = append(resArray, res) //符合添加到切片中
		res = "" //清空臨時結果
	}
	//TODO 這一步很關鍵,判斷臨時結果是否保留未添加到切片中的資料,如果有  将其添加到切片中
	if res != "" {
		resArray = append(resArray, res)
		res=""
	}
	fmt.Println("處理之後的切片長度:", len(resArray))
	for _, v := range resArray {
		fmt.Println(v)
	}
}

func isDigital(s string) bool {
	_, err := strconv.Atoi(s)
	if err != nil {
		return false
	}
	return true
}
           

運作效果如下:

Go語言字元串處理

了解更多Go語言知識:https://study.163.com/course/introduction/1210620804.htm