Go 字符串函数详解(2) | 学习笔记

简介: 快速学习 Go 字符串函数详解(2)

开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map: Go 字符串函数详解(2)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9616


Go 字符串函数详解(2)

一、编写代码

1. 返回子串在字符串最后一次出现的 index,如没有返回 -1 : strings.LastIndex("go golang" .“go”)

(1) 如果想返回子串在字符串最后出现的一个位置,上一点是返回第一个出现的位置,这个是返回最后出现的位置,可以用 LastIndex,前面讲过既然能得到第一个出现的位置,那也能得到最后一个出现的位置

(2) 案例代码:

package main

import (

"fmt"

func main(){

index = strings.LastIndex( "go golang", "go")//3

fmt.Printf( "index=%vin",index)

}

(3) 输出结果:

index=3

(4) 代码分析:

index = strings.LastIndex( "go golang", "go")里面有个 go,可以得到 go在 go golang 这个字符串里面出现的 index 是多少,就要用 LastIndex 来处理,用 index 来接收,从代码的分析看输出的结果应该是 3,运行代码后发现输出结果也是 3,完全正确,这就是求最后一次返回的位置。

2. 将指定的子串替换成另外一个子串: string.Replace("go go hello" , "go" , "go 语言" , n) n 可以指定你希望替换几个,如果 n=-1 表示全部替换

(1) Replace 这个函数中的 go 就是想要替换的,把 go 替换成 go 语言,后面的 n是指定你希望替换几个。例如 n=1,则替换第一个,如果想全部替换,就讲 n=-1

(2) 关键代码:

package main

import (

"fmt"

func main(){

str = strings.Replace( "go go hello", "go",“北京",1)

fmt.Printf( "str=%v\n", str)

}

(3) 输出结果:

str=北京 go hello

(4) 代码分析:

上面代码中把 go 换成 go 语言,第一个 go 就会变成 go 语言,第二个 go 就不会改变,只会改变一个。如果把 go 语言改成北京,那第一个 go 就变成北京,第二个 gou 不变。运行结果与分析结果一致,如果想换两个,就把后面的 1 改成 2,全部换就改成 -1,写 -1,所有的 go 都会变成北京。go go hello 实际上也可以是一个变量,str2 = "go go hello"可以把字符串直接放到变量中,效果也是一样。替换完之后 str2 是不会变化,将 str2替换完之后返回一个新串,就 str 是一个新串,str2 本身并没有发生变化,也就是前面的串没有发生变化。

3. 按照指定的某个字符,为分割标识,将一个字符串拆分成字符串数组:strings.Split("hello,wrold,ok".".")

(1) 给了一个字符串 hello,wrold,ok,但是想把这个字符串按后面指定的字符进行一个拆分,拆分成一个新的字符串。

(2) 代码如下:

package main

import (

"fmt"

func main(){

//按照指定的某个字符,为分割标识,将一个字符串拆分成字符串数组:

//strings.split( "hello,wrold,ok", ",")

strArr := strings.split( "hello,wrold,ok", ",")

for i :=0;  i < len(strArr);  i++ {

fmt.Printf"strArr=%v\n", strArr[i])

}

(3) 输出结果:

str[0]=hello

str[1]=wrold

str[2]=ok

(4) 代码分析:

上面代码中 "hello,wrold,ok" 里面有两个逗号,然后外面的一个逗号意思是按这个逗号进行拆分,也就是说这个数组会有 3 个元素,一个是 hello,一个是 wrold,一个是 ok,因为是按照逗号进行拆分的。可以看到结果是一样的,可以对结果进行遍历 for i :=0;  i < len(strArr);  i++。如果有一种需求,需要将字符串进行某一种方式的拆分得到一个数组,就可以用 split, "hello,wrold,ok" 也可以是一个字符串的变量,不会改变字符串本身,而是进行拆分形成一个数组过后,得到一个新的数组。本身不会改变字符串,也前一点所讲的 Replace 是一样,如果要改变的会,要传一个引用进去,但这里传的是一个子拷贝。

4. 将字符串的字母进行大小写的转换: strings.ToLower("Go")//go strings.ToUpper("Go")// Go

(1) 在进行密码验证的时候,想要不区分大小写,统一进行验证,可以先把 ToLower 进行大小写的转换。

(2) 案例代码:

package main

import (

"fmt"

func main(){

//将字符串的字母进行大小写的转换:

/ /strings.ToLower( "Go") //go strings.Toupper( "Go") // Go

str = "goLang Hello"

str = strings.ToLower(str)

str = strings.ToUpper(str)

fmt.Printf( "str=%v\n", str) //golang hello

}

(3) 输出结果:

GOLANG HELLO

(4) 代码分析:

上述代码中,有个字符串 str = "goLang Hello",这个字符串中有小写的字母,也有大写的字母,想要把它统一换成小写的字母,直接把字符串变量放到参数里面去,同时把返回的结果给了 str,意味着 goLang Hello 也会被改变。以前是给一个新的变量,现在是直接把返回的结果给它。如果将全部改成大写,将 ToLower 改成 ToUpper,再执行输出的结果是 GOLANG HELLO。

相关文章
|
3月前
|
监控 安全 Java
Go语言学习笔记(一)
Go语言学习笔记(一)
106 1
|
2月前
|
存储 分布式计算 算法
GO学习笔记之表达式
GO学习笔记之表达式
33 1
|
2月前
|
存储 编译器 Go
GO语言学习笔记
GO语言学习笔记
23 1
|
7月前
|
自然语言处理 前端开发 Java
Go 学习笔记-Go 编译器简介
Go 学习笔记-Go 编译器简介
43 0
|
7月前
|
自然语言处理 算法 Java
Go学习笔记-Go编译器简介
Go学习笔记-Go编译器简介
51 0
|
7月前
|
存储 Go
Go学习笔记-Go 浮点数设计原理
Go学习笔记-Go 浮点数设计原理
57 0
|
7月前
|
Go 自然语言处理 编译器
Go 学习笔记-Go 词法解析
Go 学习笔记-Go 词法解析
50 0
Go 学习笔记-Go 词法解析
|
7月前
|
Go iOS开发 MacOS
Go学习笔记-代码调试工具 dlv
Go学习笔记-代码调试工具 dlv
196 1
Go学习笔记-代码调试工具 dlv
|
7月前
|
编译器 Go
Go学习笔记-defer、panic、recover分析
Go学习笔记-defer、panic、recover分析
43 1
Go学习笔记-defer、panic、recover分析
|
7月前
|
存储 安全 Linux
Go语言学习笔记-进程和线程
Go语言学习笔记-进程和线程
36 0
Go语言学习笔记-进程和线程