Go语言开发中 经常遇到的字符串处理 的一些简单小技巧

Go语言开发中 经常遇到的字符串处理 的一些简单小技巧

Go语言圈 2022-10-18 08:30 发表于广东
学习与交流: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码值

图片

 

四、如何获取一个字符串的长度?

  1. 字节数?

v := len(str)

 

2.字符数?

//较快
v1 := utf8.RuneCountInString(str)

v2 := len([]rune(str))

 

 

五、如何更好的连接字符串?

  1. 两个字符串?

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语言的技术文章或视频教程,请关注本公众号获取并查看,感谢你的支持与信任

posted @ 2022-10-18 14:15  技术颜良  阅读(217)  评论(0编辑  收藏  举报