Golang中常用的字符串操作

Andy20
• 阅读 1263

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 截取子串

可以使用字符串上的 slice expression来获取最后三个字节.

s      := "12121211122"
first3 := s[0:3]
last3  := s[len(s)-3:]

或者如果您使用unicode,您可以执行以下操作:

s      := []rune("世界世界世界")
first3 := string(s[0:3])
last3  := string(s[len(s)-3:])

4. 中英文问题

4.1 如何处理同时存在中英文的字符串的各种字符串操作

  • 查找中英文字符串中某个中文/英文/中英文子串的Index
    • 对于string,len是按字节返回长度的
    • strings.Index函数返回的
  • 未完待续

三、字符串相关的转换

3.1 字符串转浮点数

func ToFloat32(v string, defval float32) float32{
    parseValue, isOk := strconv.ParseFloat(v, 32)
    if isOk != nil {
        return defVal
    }
    return float32(parseValue)
}

func ToFloat64(v string, defval float64) float64{
    parseValue, isOk := strconv.ParseFloat(v, 64)
    if isOk != nil {
        return defVal
    }
    return parseValue
} 

3.2 字符串与整型相互转换

// string到int
int,err:=strconv.Atoi(string)
// string到int64
int64, err := strconv.ParseInt(string, 10, 64)
// int到string
string:=strconv.Itoa(int)
// int64到string
string:=strconv.FormatInt(int64,10)
点赞
收藏
评论区
推荐文章
liuzhen007 liuzhen007
1年前
Android如何解析json字符串
前言上一篇文章介绍了服务器用Golang如何解析json字符串,今天我们来看看Android客户端是如何解析json字符串的。正文Golang如何解析post请求中的json字符串(https://www.helloworld.net/p/O917HGeiALU2D)使用java语句如何正确解析json字符串呢?举一个例子,假如我们想从rtc_i
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
小森森 小森森
4个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本欢迎添加左边的微信一起探讨!项目地址:(https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n)\2.Bug修复更新日历2.情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意),\\和注意
Karen110 Karen110
1年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
Stella981 Stella981
1年前
MacOS VSCode 安装 GO 插件失败问题解决
0x00问题重现Installinggolang.org/x/tools/cmd/guruFAILEDInstallinggolang.org/x/tools/cmd/gorenameFAILEDInstallinggolang.org/x/lint/golintFAILEDInst
Wesley13 Wesley13
1年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Stella981 Stella981
1年前
JS 苹果手机日期显示NaN问题
问题描述newDate("2019122910:30:00")在IOS下显示为NaN原因分析带的日期IOS下存在兼容问题解决方法字符串替换letdateStr"2019122910:30:00";datedateStr.repl
Wesley13 Wesley13
1年前
Java解决括号匹配算法问题
有效字符串需满足:左括号必须用相同类型的右括号闭合。包括:“()”,“\\”,“{}”。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。思路:在这里我们使用栈来实现。遍历字符串时判断:如果是左括号,那么我们将其入栈;如果为右括号,我们先判断栈是否为空(有可能字符串刚开始就是一个右括号呢),为空的话直接返回false,不为空
Stella981 Stella981
1年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
Wesley13 Wesley13
1年前
PHP中的NOW()函数
是否有一个PHP函数以与MySQL函数NOW()相同的格式返回日期和时间?我知道如何使用date()做到这一点,但是我问是否有一个仅用于此的函数。例如,返回:2009120100:00:001楼使用此功能:functiongetDatetimeNow(){
helloworld_34035044 helloworld_34035044
6个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为