Go语言开发中 经常遇到的字符串处理 的一些简单小技巧
学习与交流:Go语言技术微信群
商务合作加微信:LetsFeng
goland 全家桶激活码,支持所有版本,支持所有系统
链接:http://web.52shizhan.cn/activity/s2abxc
提取码:GJF9B1DK
现在就开始你的Go语言学习之旅吧!人生苦短,let’s Go.
一、如何修改字符串中的一个字符?
str:="hello"
// 将字符串转成字节数组
c:=[]byte(str)
// 将字节数组第一个数转成 'c'
c[0]='c'
s2:= string(c)
二、如何获取字符串的子串?
str:="hello"
// 获取 n 到 m-1 内元素 [n,m)
substr := str[n:m]
// 获取 第一个元素 [1,2)
substr := str[1:2]
三、使用for或者for-range遍历字符串?
代码如下(示例):
str:="hello"
for i:=0; i < len(str); i++ {
v := str[i]
fmt.Println(v)
}
for _, v := range str {
fmt.Println(v)
}
结果都将是ASCII码值
四、如何获取一个字符串的长度?
-
字节数?
v := len(str)
2.字符数?
//较快
v1 := utf8.RuneCountInString(str)
v2 := len([]rune(str))
五、如何更好的连接字符串?
-
两个字符串?
str1 := "hello"
str2 := "world"
v := str1 + "_" + str2
2.字符串数组或切片?
strArr := []string{
"hello", "world",
}
v1 := strings.Join(strArr, "_")
fmt.Println(v1)
自动填充字符串,补齐位数
// StrPad
// input string 原字符串
// padLength int 规定补齐后的字符串位数
// padString string 自定义填充字符串
// padType string 填充类型:LEFT(向左填充,自动补齐位数), 默认右侧
func StrPad(input string, padLength int, padString string, padType string) string {
output := ""
inputLen := len(input)
if inputLen >= padLength {
return input
}
padStringLen := len(padString)
needFillLen := padLength - inputLen
if diffLen := padStringLen - needFillLen; diffLen > 0 {
padString = padString[diffLen:]
}
for i := 1; i <= needFillLen; i += padStringLen {
output += padString
}
switch padType {
case "LEFT":
return output + input
default:
return input + output
}
}
用法:
func main() {
leftString := StrPad("84792", 10, "0000000000000000000000000", "LEFT")
rightString := StrPad("1", 5, "0000000000000000", "RIGHT")
fmt.Println(fmt.Sprintf("%s-%s", leftString, rightString)) //0000084792-10000
}
前置/后置补零
package main
import (
"fmt"
)
func main() {
res:=ZeroFillByStr("12",3,true)
fmt.Println(res)
}
//
// ZeroFillByStr
// @Description: 字符串补零
// @param str :需要操作的字符串
// @param resultLen 结果字符串的长度
// @param reverse true 为前置补零,false 为后置补零
// @return string
//
func ZeroFillByStr(str string,resultLen int, reverse bool) string {
if len(str)>resultLen||resultLen<=0{
return str
}
if reverse{
return fmt.Sprintf("%0*s", resultLen, str)//不足前置补零
}
result := str
for i:=0;i<resultLen-len(str);i++{
result+="0"
}
return result
}
结果:
1 <nil> 012
文章首发:https://blog.csdn.net/moer0/article/details/123240159
更多相关Go语言的技术文章或视频教程,请关注本公众号获取并查看,感谢你的支持与信任