Go package: strings
Go strings
Go 的 strings 包中包含许多处理字符串的函数
官方文档:https://golang.org/pkg/strings/
前缀、后缀
判断字符串前缀、后缀
// 判断字符串 s 是否以 prefix 开头
func HasPrefix(s, prefix string) bool
// 判断字符串 s 是否以 suffix 结尾
func HasSuffix(s, suffix string) bool
查找子字符串
查找字符串中是否包含子字符串
// 查找字符串 s 中是否包含 substr
func Contains(s, substr string) bool
// 查找字符串 s 中是否包含 chars 中任意字符
func ContainsAny(s, chars string) bool
查找字符串中子字符串的位置
// 查找字符串 s 中第一次出现 substr 的位置,如果不存在返回 -1
func Index(s, substr string) int
// 查找字符串 s 中最后一次出现 substr 的位置,如果不存在返回 -1
func LastIndex(s, substr string) int
// 查找字符串 s 中第一次出现 chars 中任意字符的位置,如果不存在返回 -1
func IndexAny(s, chars string) int
// 查找字符串 s 中最后一次出现 chars 中任意字符的位置,如果不存在返回 -1
func LastIndexAny(s, chars string) int
// 查找字符串 s 中第一次出现 c 字节的位置,如果不存在返回 -1
func IndexByte(s string, c byte) int
修剪
Trim 通过 Unicode 编码是否一致判断去除的片段,cutset 中包含的是要去除的字节,顺序不一致也会被删除
Trim 会连续去除,直至指定位置不存在该片段,但是 TrimPrefix、TrimSuffix 只会去除一次,用于去除前、后缀
// 返回字符串 s 在前后分别去除 cutset 中包含字节的切片
func Trim(s string, cutset string) string
// 返回字符串 s 在前后分别去除空格的切片
// 等于 func Trim(s string, “ ”) string
func TrimSpace(s string) string
// 返回字符串 s 在开头去除 cutset 中包含字节的切片
func TrimLeft(s string, cutset string) string
// 返回字符串 s 在结尾去除 cutset 中包含字节的切片
func TrimRight(s string, cutset string) string
示例:
package main
import (
"fmt"
"strings"
)
func main() {
a := "hello world"
b := strings.TrimLeft(a, "lhed")
c := strings.TrimPrefix(a, "hel")
d := strings.Trim(a, "lhed")
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
}
输出结果:
hello world
o world
lo world
o wor
分割
将一个字符串以指定分隔符进行分隔,返回一个切片
// 以一个或多个空格为分隔符,对字符串 s 进行分割,空字符串会被舍弃
func Fields(s string) []string
// 以一个字符串为分隔符,对字符串 s 进行分割
// 如果分隔符为空,则将每个字符进行切割
func Split(s, sep string) []string
// 在一个字符串 sep 之后对字符串 s 进行分割
// 如果字符串 sep 为空,则对每个字符进行切割
func SplitAfter(s, sep string) []string
// 以一个字符串为分隔符,从第一个分隔符开始,将字符串 s 最多分割成 n 部分
// 当 n == 0 时,返回 nil;当 n == -1 时,相当于 `Split`
func SplitN(s, sep string, n int) []string
// 和 `SplitAfter` 的区别相当于 `Split` 和 `SplitN`
func SplitAfterN(s, sep string, n int) []string
示例:
package main
import (
"fmt"
"strings"
)
func main() {
a := " hello, world, !"
b := strings.Fields(a)
c := strings.Split(a, " ")
d := strings.Split(a, ",")
e := strings.SplitAfter(a, ",")
f := strings.SplitAfterN(a, ",", 2)
fmt.Println(b, len(b))
fmt.Println(c, len(c))
fmt.Println(d, len(d))
fmt.Println(e, len(e))
fmt.Println(f, len(f))
}
输出结果:
[hello, world, !] 3
[ hello, world, !] 5
[ hello world !] 3
[ hello, world, !] 3
[ hello, world, !] 2
替换
替换会搜素字符串中所有符合条件的子字符串,之后将其替换为新字符串
// 将字符串 s 中包含的 old 字符串替换为 new 字符串,从最左边开始一共替换 n 次
// 如果 old 为空,则从字符串开头开始,字符串开头结尾和每个字符之间添加一个 new,一共添加 n 个
// 如果 n < 0 则替换次数没有限制,相当于 `ReplaceAll`
func Replace(s, old, new string, n int) string
// 和 `Replace` 相似,没有限制
func ReplaceAll(s, old, new string) string
示例:
package main
import (
"fmt"
"strings"
)
func main() {
a := " hello world "
b := strings.Replace(a, " ", ",", 1)
c := strings.Replace(a, "", ",", 3)
d := strings.Replace(a, " ", ",", -1)
e := strings.ReplaceAll(a, " ", ",")
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
fmt.Println(e)
}
输出结果:
,hello world
, ,h,ello world
,hello,world,
,hello,world,
计数
// 字符串 s 包含子字符串 substr 的数量
// 如果 substr 为空,则返回字符串长度 + 1(字符间隙的数量)
func Count(s, substr string) int
重复
// 将字符串 s 重复 count 次,拼接成一个字符串
// count < 0 时会 panic
func Repeat(s string, count int) string
大小写转换
// 将字符串内所有字母转换成小写
func ToLower(s string) string
// 将字符串中所有字母转换成大写
func ToUpper(s string) string
// 每个单词的第一个字母转换为标题大小写
func Title(s string) string
// 将字符串内所有字母转换为标题大小写
func ToTitle(s string) string
拼接
拼接是切割的反操作
// 以 sep 为分隔符,将 a 中元素拼接起来
func Join(a []string, sep string) string
Go package: strings的更多相关文章
- golang程序编译时提示“package runtime: unrecognized import path "runtime" (import path does not begin with hostname)”
在编译golang的工程时提示错误的, 提示的错误信息如下: package bytes: unrecognized import path "bytes" (import pat ...
- JAVA中的字符串小结
String字符串是只读的,不可变的 查看String类的源码,可以发现String类是被final关键字修饰的: 另外还可以看下String类源码中的其它方法实现,随便举个可以修改String值的方 ...
- The Go Programming Language. Notes.
Contents Tutorial Hello, World Command-Line Arguments Finding Duplicate Lines A Web Server Loose End ...
- Java的String和StringBuilder
一.String 1.创建String对象的方法: String s1="haha"; String s2=new String(); String s3=new String(& ...
- go语言标准库 时刻更新
Packages Standard library Other packages Sub-repositories Community Standard library ▾ Name Synops ...
- java 扫描输入
到目前为止,从文件或标准输入读取数据还是一件相当痛苦第事情,一般第解决之道就是读入一行文本,对其进行分词,然后使用Integer Double 等类第各种解析方法来解析数据: //: strings/ ...
- java 格式化
一. 可以之际像c语言一样用System.out.printf()格式化输出 二. System.out.format 1. format()方法模仿自printf(), 可用于PrintStream ...
- java jvm 字节码 实例
https://blog.csdn.net/wuzhiwei549/article/details/80626677 代码 package strings; //: strings/WhitherSt ...
- 08 Packages 包
Packages Standard library Other packages Sub-repositories Community Standard library Name Synopsis ...
随机推荐
- Fiddler抓取内容自动保存本地
Fiddler抓取内容自动保存本地 一.点击FidderScript 二.选择你想要的获得内容的方法 OnBeforeRequest:发送请求后 OnBeforeResponse:获得响应 三.修改j ...
- 数据库学习笔记day04
--row_number()over(partition by xxx order by xxx)分组排序函数 特点:组内连续且唯一select ename,sal,deptno,row_number ...
- Windows系统Git配置教程(Git配置git config)
Windows系统Git配置教程(Git配置git config) 在很多Git配置教程中,多是安装完毕后就告诉大家要配置用户名和邮箱,但是这个配置是保存在哪里呢,配置后面的参数有什么不同呢,下面 ...
- Python输出16进制不带0x补零,整数转16进制,字符串转16进制
Python输出16进制不带0x补零,整数转16进制,字符串转16进制 在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性.例如调试服务端刚接到的二进制数据(里面包含很多 ...
- 手把手教你安装Virtualbox,安装并运行虚拟机
一.安装VirtualBox. 官网:https://www.virtualbox.org/wiki/Downloads 首先,进入官网下载页面,单击Windows hosts 链接(图中红色方框), ...
- http并发访问模型(2)
目录 http并发 并发访问模型 响应流程 从IO的角度看待响应 从函数的角度看待响应 日志处理 我叫张贺,贪财好色.一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网 ...
- 开发一个这样的 APP 要多长时间?
作者:蒋国刚 www.cnblogs.com/guogangj/p/4676836.html 这是一个“如有雷同,纯属巧合”的故事,外加一些废话,大家请勿对号入座.开始了…… 我有些尴尬地拿着水杯,正 ...
- Python爬虫的概括以及实战
第一章主要讲解爬虫相关的知识如:http.网页.爬虫法律等,让大家对爬虫有了一个比较完善的了解和一些题外的知识点. 今天这篇文章将是我们第二章的第一篇,我们从今天开始就正式进入实战阶段,后面将会有更 ...
- 匿名函数,内置函数II,闭包
1. 匿名函数 匿名函数,顾名思义就是没有名字的函数,那么什么函数没有名字呢?这个就是我们以后面试或者工作中经常用匿名函数 lambda,也叫一句话函数. 现在有一个需求:你们写一个函数,此函数接收两 ...
- 利用 Docker Compose 搭建 SpringBoot 运行环境(超详细步骤和分析)
0.前言 相信点进来看这篇文章的同学们已经对 Docker Dompose 有一定的了解了,下面,我们拿最简单的例子来介绍如何使用 Docker Compose 来管理项目. 本文例子: 一个应用服务 ...