oracle 获取字段某个字段的下标,go获取字符串特定下标中间的字符,正则查找和替换字符串中特定字符...

参考:https://blog.csdn.net/chenxun_2010/article/details/74356719

https://blog.csdn.net/sphinx1122/article/details/86360427

一、获取golang特定下标中间的字符

字符串在内存中:双字结构,即一个指向实际数据的指针和记录字符串长度的整数。

字符串string s = "hello" 和字符串 t = s[2:3] 在内存中的结构如下图表示:

7e4c89beeb999ac27272191f16865de1.png

因为指针对用户完全不可见,所以我们依旧可以将字符串看成一个值类型,即一个字符数组。

将一个字符串s转为字节切片:     c := []bytes(s)

截取一个字符串str的某部分:       substr := str[start:end]    (获取从索引 start 开始到 end-1 位置的子字符串)

str[start:]            (获取从索引 start 开始到 len(str)-1 位置的子字符串)

str[:end]             (获取从索引 0 开始到 end-1 位置的子字符串)

获取字符串str 的 start 字符的索引:strings.Index(str,start)

一个字符串str 可以直接:             str = []s

二、修改字符串中的某个字符

Go 语言中的字符串是不可变的,也就是说 str[index] 这样的表达式是不可以被放在等号左侧的。如果尝试运行 str[i] = 'D' 会得到错误:cannot assign to str[i]。

因此,您必须先将字符串转换成字节数组,然后再通过修改数组中的元素值来达到修改字符串的目的,最后将字节数组转换回字符串格式。

例如,将字符串 "hello" 转换为 "cello":

s := "hello"

c := []byte(s)

c[0] = ’c’

s2 := string(c) // s2 == "cello"

所以,您可以通过操作切片来完成对字符串的操作。

三、正则

//查找连续的小写字母

reg := regexp.MustCompile(`[a-z]{2,}`)

fmt.Printf("%s\n", reg.FindAllString(text, -1))// [bc ca olang]

查找连续的非小写字母

reg = regexp.MustCompile(`[^a-z]{2,}`)

fmt.Printf("%s\n",reg.FindAllString(text, -1))//[ MFC 8 . 你好! G]

查找 abc 或 Golang

reg = regexp.MustCompile(`(abc|Golang)`)

fmt.Printf("%s\n", reg.FindAllString(text, -1)) //[Golang]

查找以 G开头,以 / 结尾的单词

reg = regexp.MustCompile(`G[\w.]*\/`)

fmt.Printf("%s\n", reg.FindAllString(text, -1)) //[Golang/]

查找从行首开始,以空格结尾的字符串

reg = regexp.MustCompile(`[\w]+\s`)

fmt.Printf("%s\n", reg.FindAllString(text, -1)) //[Abc a7c MFC ]

查找连续 1 次到 4 次的非空格字符,并以 c 结尾的字符串

reg = regexp.MustCompile(`[^\s]{1,4}c`)

fmt.Printf("%s\n", reg.FindAllString(text, -1)) //[Abc a7c 8c]

替换

查找 Abc 或 a7c 或 你好 ,替换为**号

reg = regexp.MustCompile(`(Abc|a7c|你好)`)

fmt.Printf("%s\n", reg.ReplaceAllString(text, "**")) //** ** MFC 8ca. **! Golang/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值