文章目录
正文
Golang中常用的字符串操作
一、标准库相关的Package
import(
"strings"
)
二、常用字符串操作
1. 判断是否为空字符串
1.1 使用“==”进行判断
- 思路:直接判断是否等于""空字符串,由于golang中字符串不能为nil,且为值类型,所以直接与空字符串比较即可。
- 举例:
str := ""
if str == ""{
fmt.Println("str 为空字符串")
}
1.2 使用strings包下的Compare方法
根据官方文档的描述,该方法必然比使用“==”进行判断效率高( always faster to use the built-in
// string comparison operators ==, <, >, and so on.)
str1 := "string1"
str2 := "string2"
ret := strings.Compare(str1, str2)
fmt.Println("ret = ", ret) //输出ret = -1
str2 = "string1"
ret = strings.Compare(str1, str2)
fmt.Println("ret = ", ret) //输出ret = 0
2. 字符串拼接/字符串组合/字符串加减
字符串拼接其实有很多种方式,仅记录高效率的、使用起来简单的方法
2.1 直接使用“+”或者"+="运算符进行拼接
使用简单,效率不算特别差
str1 := "string1 + "
str2 := "string2"
fmt.Println(str1 + str2) //输出string1 + string2
str1 += "str2"
fmt.Println(str1)//输出string1 + str2
2.2 使用buffer.WriteString()
使用相对简单,效率比使用“+”或者"+="运算符高
//要引入"bytes"包
var buf bytes.Buffer
buf.WriteString("str1")
buf.WriteString("+")
buf.WriteString("stri2")
res := buf.String()
fmt.Println(res)//输出str1+stri2
3. 字符串和子串
3.1 字符串是否含有指定的子串
使用func Contains(s, substr string) bool函数,在strings包中
3.2 截取子串
4. 中英文问题
4.1 如何处理同时存在中英文的字符串的各种字符串操作
- 查找中英文字符串中某个中文/英文/中英文子串的Index
- 对于string,len是按字节返回长度的
- strings.Index函数返回的
- 未完待续
三、字符串相关的转换
- 字符串转浮点数:
func ToFloat32(v string, defval float32) float32{
parseValue, isOk := strconv.ParseFloat(v, 32)
if isOk != nil {
return defVal
}
return float32(parseValue)//转为float32。根据官方文档,返回值默认是float64类型,可以转为float32,没有说清楚是否传入的参数是32的时候就是按float32的精度处理还是一律按float64的精度处理。我猜是前者——虽然是float64类型,但实际精度只有float32
}
func ToFloat64(v string, defval float64) float64{
parseValue, isOk := strconv.ParseFloat(v, 64)
if isOk != nil {
return defVal
}
return parseValue
}