三、GoLang字符串的基本操作
一、转义符是什么?
转义字符 | 意义 |
---|---|
\n | 换行,将当前位置移动到下一行开头 |
\r | 回车,将当前位置移到本行开头 |
\t | 相当于一个Tab键 |
\\ | 代表一个反斜线“\” |
\" | 代表一个双引号字符 |
代码实战
package mainimport "fmt"/*
*字符串基本用法
*/
func main() {//转义符// 我在学习"go"语言的字符串基本用法\,字符串的'基本用法'// 假如现在在程序里输出这么一段话 我们需要对 引号来进行转义 因为他和我们定义字符串冲突了// 转义可以使用 \ 或者使用 ``var learn stringlearn = "我在学习\"go\"语言的字符串基本用法\\,字符串的'基本用法'"learn1 := `我在学习"go"语言的字符串基本用法`fmt.Println(learn)fmt.Println(learn1)// 1.\n:换行,将当前位置移到下一行开头var string1 stringstring1 = "我在学习go语言,\n学习到换行符了"fmt.Println(string1)// 2.\r:回车,将当前位置移到本行开头var string2 stringstring2 = "我在学习go语言,\r学习到回车符了"fmt.Println(string2)// 3.\t:相当于一个 Tab键var string3 stringstring3 = "\t我在学习go语言,到tab键了"fmt.Println(string3)//计算字符串的长度var desc stringdesc = "我在学习字符串的基本用法"descs := []rune(desc)fmt.Println(len(descs))
}
二、字符串格式化输出
2.1 缺省格式和类型
格式化后的效果 | 动词 | 描述 |
---|---|---|
[0 1] | %v | 缺省格式 |
[]int64(0,1) | %#v | go语法打印 |
[]int64 | %T | 类型打印 |
2.2 整型(缩进,进制类型,正负符号)
格式化后的效果 | 动词 | 描述 |
---|---|---|
15 | %d | 十进制 |
+15 | %+d | 必须显示正负符号 |
_15 | %4d | Pad空格(宽度为4,右对齐) |
15_ | %-4d | Pad空格(宽度为4,左对齐) |
1111 | %b | 二进制 |
17 | %o | 八进制 |
f | %x | 16进制,小写 |
2.3 字符(有引号,Unicode)
value:65 (Unicode 是 A )
格式化后的效果 | 动词 | 描述 |
---|---|---|
A | %c | 字符 |
‘A’ | %q | 有引号的字符 |
U+0041 | %U | Unicode |
U+0041 ‘A’ | %#U | Unicode有引号 |
2.4 浮点(缩进、精度、科学计数)
value:123.456
格式化后的效果 | 动词 | 描述 |
---|---|---|
1.234560e+02 | %e | 科学计数 |
123.456000 | %f | 十进制小数 |
2.5 字符串
value:“cookie”
格式化后的效果 | 动词 | 描述 |
---|---|---|
cookie | %s | 字符串原样输出 |
_cookie | %6s | 宽度为6,邮对齐 |
部分演示代码:
package mainimport "fmt"func main() {//=============================================== 二、格式化输出相关的参数===========================username := "张三"age := 20address := "北京"var ages []int = []int{1, 2, 3}outContent := fmt.Sprintf("用户名%s,年龄:%d,地址:%s 数组的值:%v", username, age, address, ages)fmt.Println(outContent)}
三、字符串拼接
package mainimport ("fmt""strconv""strings"
)func main() {//字符串的拼接name := "张三"age := 18sex := "男"address := "北京市海淀区上地大厦"//第一种拼接方式:字符串性能最差的outContent := fmt.Sprintf("姓名是:%s,性别是:%s,年龄是:%d,工作地址在:%s", name, sex, age, address)//第二种拼接方式:性能良好的outContent1 := "姓名是:" + name + ",性别是:" + sex + ",年龄是:" + strconv.Itoa(age) + ",工作地址在:" + address//第三种拼接方式:性能最好var builder strings.Builderbuilder.WriteString("姓名是:")builder.WriteString(name)builder.WriteString(",性别是:")builder.WriteString(sex)builder.WriteString(",年龄是:")builder.WriteString(strconv.Itoa(age))builder.WriteString(",工作地址是:")builder.WriteString(address)//生成字符串内容outContent2 := builder.String()//统计 builder的长度fmt.Println("字符串的长度", builder.Len())//重置 builder的内容?builder.Reset()outContent3 := builder.String()//打印内容fmt.Println(outContent)fmt.Println(outContent1)fmt.Println(outContent2)fmt.Println("这是什么内容:" + outContent3)}
四、字符串的比较
package mainimport ("fmt""strings"
)
func main() {//=============================================== 二、字符串的比较===========================a := "hello"b := "hello"c := "bello"fmt.Println(a == b)fmt.Println(a != b)//大小比较 比较 ASCII码fmt.Println(a > c)
}
五、字符串操作常用方法
字符串常用方法可以点进到源码进行查看
package mainimport ("fmt""strings"
)func main() {//=============================================== 三、字符串的常用方法===========================content := "我在学习go语言,正在学习的是字符串的常用方法"//查询字符串是否包含某个值fmt.Println(strings.Contains(content, "go"))//计算字符串的长度var desc stringdesc = "我在我"descs := []rune(desc)fmt.Println(len(descs))//出现的次数fmt.Println(strings.Count(content, "go"))//分割字符串var contents = strings.Split(content, ",")fmt.Println(contents[0])fmt.Println(contents[1])
}