在平时的业务中经常需要对字符串进行处理,在此加以记录,便于小伙伴查阅。
1、去掉字符串首尾空格
代码如下:
str := " 12 34 "
fmt.Println("原字符串:", str)
fmt.Println("原字符串的长度:", len(str))
s := strings.TrimSpace(str)
fmt.Println("处理之后的字符串:", s)
fmt.Println("处理之后的字符串长度:", len(s))
可以通过 strings.TrimSpace() 方法可以去掉字符串的首尾空格,运行结果如下:
2、去掉字符串首尾的特殊字符
代码如下:
str1 := "#12#34#"
fmt.Println(str1)
s1 := strings.Trim(str1, "#")
fmt.Println(s1)
用到的方法是:strings.Trim(s string, cutset string)
运行效果如下:
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 去掉字符串中的所有空格。
运行效果如下:
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语言知识:https://study.163.com/course/introduction/1210620804.htm