Go语言string包详解
strings包实现了用于操作字符的简单函数。
查找操作
判断给定字符串s中是否包含子串substr, 找到返回true, 找不到返回false
func Contains(s, substr string) bool
实例如下:
package main import (
"fmt"
"strings"
) func main() {
fmt.Println("包含子串返回:", strings.Contains("oldboy", "boy"))
fmt.Println("不包含子串返回:", strings.Contains("oldboy", "girl"))
fmt.Println("子字符串是空字符串返回:", strings.Contains("oldboy", ""))
fmt.Println("原字符串、子字符串都是空字符串返回:", strings.Contains("", ""))
fmt.Println("中文字符串包含子串返回:", strings.Contains("蒋春生", "春生"))
}
运行结果:
包含子串返回: true
不包含子串返回: false
子字符串是空字符串返回: true
原字符串、子字符串都是空字符串返回: true
中文字符串包含子串返回: true
在字符串s中查找sep所在的位置, 返回位置值, 找不到返回-1
func Index(s, sep string) int
实例如下:
package main import (
"fmt"
"strings"
) func main() {
fmt.Println("存在返回第一个匹配字符的位置:", strings.Index("oldboy", "boy"))
fmt.Println("不存在返回:", strings.Index("oldboy", "girl"))
fmt.Println("中文字符串存在返回:", strings.Index("蒋春生", "春生"))
}
运行结果:
存在返回第一个匹配字符的位置:
不存在返回: -
中文字符串存在返回:
统计给定子串sep的出现次数, sep为空时, 返回字符串的长度 + 1
func Count(s, sep string) int
实例如下:
package main import (
"fmt"
"strings"
) func main() {
fmt.Println("子字符串出现次数:", strings.Count("oldboy", "o"))
fmt.Println("子字符串为空时, 返回:", strings.Count("oldboy", ""))
}
运行结果:
子字符串出现次数:
子字符串为空时, 返回:
重复操作
重复s字符串count次, 最后返回新生成的重复的字符串
func Repeat(s string, count int) string
实例如下:
package main import (
"fmt"
"strings"
) func main() {
fmt.Println(strings.Repeat("嘀嗒", ), "时针它不停在转动")
}
运行结果:
嘀嗒嘀嗒嘀嗒嘀嗒 时针它不停在转动
替换操作
在s字符串中, 把old字符串替换为new字符串,n表示替换的次数,如果n<0会替换所有old子串。
func Replace(s, old, new string, n int) string
实例如下:
package main import (
"fmt"
"strings"
) func main() {
fmt.Println(strings.Replace("luck luck luck", "k", "ky", ))
fmt.Println(strings.Replace("luck luck luck", "k", "ky", -))
}
运行结果:
lucky lucky luck
lucky lucky lucky
删除操作
删除在s字符串的头部和尾部中由cutset指定的字符, 并返回删除后的字符串
func Trim(s string, cutset string) string
实例如下:
package main import (
"fmt"
"strings"
) func main() {
fmt.Println(strings.Trim(" oldboy ", " "))
}
运行结果:
oldboy
大小写转换
给定字符串转换为英文标题的首字母大写的格式(不能正确处理unicode标点)
func Title(s string) string
返回将所有字母都转为对应的小写版本的拷贝
func ToLower(s string) string
返回将所有字母都转为对应的大写版本的拷贝
func ToUpper(s string) string
实例如下:
package main import (
"fmt"
"strings"
) func main() {
fmt.Println(strings.Title("It is never too late to learn."))
fmt.Println(strings.ToLower("It Is Never Too Late To Learn."))
fmt.Println(strings.ToUpper("It is never too late to learn."))
}
运行结果:
It Is Never Too Late To Learn.
it is never too late to learn.
IT IS NEVER TOO LATE TO LEARN.
字符串前缀后缀
判断字符串是否包含前缀prefix,大小写敏感
func HasPrefix(s, prefix string) bool
判断s是否有后缀字符串suffix,大小写敏感
func HasSuffix(s, suffix string) bool
实例如下:
package main import (
"fmt"
"strings"
) func main() {
fmt.Println("前缀是以old开头的:", strings.HasPrefix("oldboy", "old"))
fmt.Println("后缀是以boy开头的:", strings.HasSuffix("oldboy", "boy"))
}
运行结果:
前缀是以old开头的: true
后缀是以boy开头的: true
字符串分割
用去掉s中出现的sep的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。
func Split(s, sep string) []string
返回将字符串按照空白(unicode.IsSpace确定,可以是一到多个连续的空白字符)分割的多个字符串。如果字符串全部是空白或者是空字符串的话,会返回空切片。
func Fields(s string) []string
实例如下:
package main import (
"fmt"
"strings"
) func main() {
fmt.Println("Split 函数的用法")
fmt.Printf("%q\n", strings.Split("Linux,Python,Golang,Java", ","))
fmt.Printf("%q\n", strings.Split("a mountain a temple", "a "))
fmt.Printf("%q\n", strings.Split(" abc ", ""))
fmt.Printf("%q\n", strings.Split("", "oldboy"))
fmt.Println("Fields 函数的用法")
fmt.Printf("Fields are: %q\n", strings.Fields(" Linux Python Golang Java "))
}
运行结果:
Split 函数的用法
["Linux" "Python" "Golang" "Java"]
["" "mountain " "temple"]
[" " "a" "b" "c" " "]
[""]
Fields 函数的用法
Fields are: ["Linux" "Python" "Golang" "Java"]
func Split(s, sep string) []string
Go语言string包详解的更多相关文章
- Go语言fmt包详解
格式化输出函数 fmt包含有格式化I/O函数,类似于C语言的printf和scanf.格式字符串的规则来源于C,但更简单一些 1.print和println方法 print输出给定的字符串,如果是数值 ...
- 常见 jar包详解
常见 jar包详解 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期 ...
- Spring jar包详解
Spring jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spri ...
- Spring——jar包详解(转)
Spring——jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spr ...
- Spring 3.x jar 包详解 与 依赖关系
以下的内容我会持续更新(当然是我有新发现的时候); 以下内容是我在网上搜索.整理.修改的而成的内容.由于很多内容都是转载了,无法追溯到源头,因此无法一一对原作者进行道谢. 这几天,我查阅大量的官方的文 ...
- Spring 3.x jar 包详解 与 依赖关系(转)
以下的内容我会持续更新(当然是我有新发现的时候); 以下内容是我在网上搜索.整理.修改的而成的内容.由于很多内容都是转载了,无法追溯到源头,因此无法一一对原作者进行道谢. 这几天,我查阅大量的官方的文 ...
- easyui下载包详解
easyui包详解: 文件夹: demo--该目录下存放的是 EasyUI PC 版各插件的示例示例.如果不想在官网上查看演示,可以在该目录下找到相应的演示示例 demo-mobile--该目录下存放 ...
- spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途
Spring4 Jar包详解 SpringJava Spring AOP: Spring的面向切面编程,提供AOP(面向切面编程)的实现 Spring Aspects: Spring提供的对Aspec ...
- Spring各个jar包详解
Spring各jar包详解 spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar,aspects.jar, spring-portlet.jar, and sprin ...
随机推荐
- [Training Video - 2] [Java Introduction] [Operator, Loops, Arrays, Functions]
Operator : While Loop : For Loop : Arrays : Code : public class FirstJavaClass { public static void ...
- Mysal表类型的区别-MyISAM,InnoDB
1/ISAM ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数.因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源.I ...
- C++ 类 & 对象-类成员函数-类访问修饰符-C++ 友元函数-构造函数 & 析构函数-C++ 拷贝构造函数
C++ 类成员函数 成员函数可以定义在类定义内部,或者单独使用范围解析运算符 :: 来定义. 需要强调一点,在 :: 运算符之前必须使用类名.调用成员函数是在对象上使用点运算符(.),这样它就能操作与 ...
- Codeforces788A Functions again 2017-04-12 18:22 56人阅读 评论(0) 收藏
C. Functions again time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- cocos2dx的addChild接口设计
addChild的几个重载函数挺容易用错的 主要是因为cocos2dx用来给游戏对象设置标签时,用的是整型而不是字符串 导致标签这个参数很容易和同样是使用整型的代表游戏对象的层级关系的参数混淆.
- C#基础入门 九
C#基础入门 九 集合 对于很多应用程序,需要创建和管理相关对象组,有两种方式可以将对象分组,一是创建对象数组,如 object[] obj=new object[3]{1,2.33,"st ...
- docker容器怎么设置开机启动
https://my.oschina.net/lwenhao/blog/1923003 docker服务器.以及容器设置自动启动 一.docker服务设置自动启动 说明:适用于yum安装的各种服务 查 ...
- R语言中Fisher判别的使用方法
最近编写了Fisher判别的相关代码时,需要与已有软件比照结果以确定自己代码的正确性,于是找到了安装方便且免费的R.这里把R中进行Fisher判别的方法记录下来. 1. 判别分析与Fisher判别 不 ...
- vim 命令全
1 简介 vim是文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用.下面讲述一些必要的基本命令,而掌握好这些命令,您就能够很容易将vim当作一个通用的万能编辑器来使用 ...
- RoadFlowCore工作流引擎快速入门
RoadFlow新建一个流程分为以下几步: 1.建表 在数据库建一张自己的业务表(根据你自己的业务需要确定表字段,如请假流程就有,请假人.请假时间.请假天数等字段),数据表必须要有一个主键,主键类型是 ...