一文带你了解Go语言标准库strings的常用函数和方法

目录
  • strings 库
  • 高效拼接字符串
  • 大小写转换
  • 比较两个字符串
  • 字符串的替换
  • 按照某个分割标识分割字符串
  • 去掉字符串左右两边的空格
  • 将字符串[左边]或[右边]或[左右两边]所指定的字符(串)去掉
  • 判断字符串是否以指定的字符串开头
  • 判断字符串是否以指定的字符串结束
  • 将字符串切片中的元素以指定字符串连接生成新字符串
  • 查找子串是否存在于指定的字符串中
  • 小结

strings 库

strings 库包含了许多高效的字符串常用操作的函数和方法,巧用这些函数与方法,能极大的提高我们程序的性能。下面介绍一些常用的函数和方法。

高效拼接字符串

使用 strings 库里的 Builder 变量,结合其写入方法如 WriteString 方法,可以进行高效的拼接字符串。

import (
    "strings"
)

func main() {
    var builder strings.Builder
    builder.WriteString("hello")
    builder.WriteString(" ")
    builder.WriteString("world")
    builder.WriteString("!")
    s := builder.String()
    println(s) // hello world!
}

strings.Builder 底层是通过其内部的 slice 来储存内容的。当调用其相关的写入方法(如 WriteString )的时,新的字节数据就会被追加到 slice 上。相比普通字符串的多次拼接,减少了拼接时需要创建新字符串的内存开销。

大小写转换

小写转大写

ToUpper(s string) string:将一个字符串里的小写字符转成大写,因为字符串不可变的特点,该函数会返回一个新的字符串。

import "strings"

func main() {
    s1 := "hello"
    s2 := strings.ToUpper(s1)
    println(s2) // HELLO
}

大写转小写

ToLower(s string) string:将一个字符串里的大写字符转成小写,因为字符串不可变的特点,该函数会返回一个新的字符串。

import "strings"

func main() {
    s1 := "HELLO"
    s2 := strings.ToLower(s1)
    println(s2) // hello
}

比较两个字符串

区分大小写比较

func main() {
    s1 := "hello"
    s2 := "hello"
    s3 := "HELLO"
    println(s1 == s2) // true
    println(s1 == s3) // false
}

直接通过 == 操作符进行区分大小写的字符串比较即可。

不区分大小写比较 使用 EqualFold(s, t string) bool 函数进行比较,两个参数为需要比较的两个字符串,返回值为布尔值,如果是 true 说明字符串相等,反之 false 则字符串不相等。

func main() {
    s1 := "hello"
    s2 := "hello"
    s3 := "HELLO"
    isEual := strings.EqualFold(s1, s2)
    println(isEual) // true
    isEual2 := strings.EqualFold(s1, s3)
    println(isEual2) // true
}

字符串的替换

字符串替换的函数:Replace(s, old, new string, n int) string

  • 第一个参数 s 为原字符串。
  • 第二个参数 old 为需要替换的字符串。
  • 第三个参数 new 为替换后的字符串。
  • 第四个参数 n 为指定替换几个 old ,如果 n 小于 0,则替换全部。
  • 返回值为替换后的新字符串。

案例:实现对敏感词的替换

func main() {
    s1 := "我靠啊靠"
    s2 := strings.Replace(s1, "靠", "*", 1)
    println(s2) // true 我*啊靠
    s3 := "我靠啊靠"
    s4 := strings.Replace(s3, "靠", "*", -1)
    println(s4) // true 我*啊*
}

第一次替换时,n 指定为 1,因此只替换了一个敏感词。 第二次替换时,n 指定为 -1,小于 0,因此将所有敏感词都替换了。

按照某个分割标识分割字符串

分割字符串的函数:Split(s, sep string) []string

  • 第一个参数 s 为需要分割的字符串。
  • 第二个参数 sep 为分割的标识。
  • 返回值为字符串切片,保存被分割出来的子字符串。
import (
    "fmt"
    "strings"
)

func main() {
    s1 := "golang-is-awesome"
    strSlice := strings.Split(s1, "-")
    fmt.Println(strSlice) // [golang is awesome]
}

去掉字符串左右两边的空格

函数:TrimSpace(s string) string

  • 第一个参数 s 为需要去除空格的字符串。
  • 返回值为去除空格后的新字符串。
import (
    "strings"
)

func main() {
    s1 := "      golang is awesome       "
    s2 := strings.TrimSpace(s1)
    println(s2) // "golang is awesome"
}

将字符串[左边]或[右边]或[左右两边]所指定的字符(串)去掉

将字符串[左右两边]所指定的字符(串)去掉

函数:Trim(s, cutset string) string

import (
    "strings"
)

func main() {
    s1 := "-golang is awesome-"
    s2 := strings.Trim(s1, "-")
    println(s2) // "golang is awesome"
}

第一个参数 s 为需要去除指定字符的字符串。

第二个参数为指定的字符(串)。

将字符串[左边]所指定的字符(串)去掉

函数:TrimLeft(s, cutset string) string

import (
    "strings"
)

func main() {
    s1 := "-golang is awesome"
    s2 := strings.TrimLeft(s1, "-")
    println(s2) // "golang is awesome"
}

第一个参数 s 为需要去除指定字符的字符串。

第二个参数为指定的字符(串)。

将字符串[右边]所指定的字符(串)去掉

函数:TrimRight(s, cutset string) string

import (
 "strings"
)

func main() {
    s1 := "golang is awesome-"
    s2 := strings.TrimRight(s1, "-")
    println(s2) // "golang is awesome"
}

第一个参数 s 为需要去除指定字符的字符串。

第二个参数为指定的字符(串)。

判断字符串是否以指定的字符串开头

函数:HasPrefix(s, prefix string) bool

  • 第一个参数 s 为被判断字符串。
  • 第二个参数 prefix 为指定的字符串。
import (
    "strings"
)

func main() {
    s1 := "hello world!"
    flag := strings.HasPrefix(s1, "hello")
    println(flag) // true
}

判断字符串是否以指定的字符串结束

函数:HasSuffix(s, prefix string) bool

  • 第一个参数 s 为被判断字符串。
  • 第二个参数 prefix 为指定的字符串。
import (
    "strings"
)

func main() {
    s1 := "hello world!"
    flag := strings.HasSuffix(s1, "!")
    println(flag) // true
}

将字符串切片中的元素以指定字符串连接生成新字符串

函数:Join(elems []string, sep string) string

  • 第一个参数 elems 为字符串切片。
  • 第二个参数 sep 为连接符。
  • 返回值为新的字符串。
import (
    "strings"
)

func main() {
    strSlice := []string{"golang", "is", "awesome"}
    s := strings.Join(strSlice, "-")
    println(s) // golang-is-awesome
}

查找子串是否存在于指定的字符串中

函数: Contains(s, substr string) bool

  • 第一个参数 s 为指定的字符串。
  • 第二个参数 substr 为子串。
  • 返回值为布尔值,如果是 true 说明存在,反之 false 则不存在。
import (
    "strings"
)

func main() {
    s := "golang is awesome"
    isContains := strings.Contains(s, "golang")
    println(isContains) // true
}

小结

本文先对 strings 标准库里的 Builder 变量进行介绍,使用其写入方法可以高效地拼接字符串,然后对 ToUpperToLowerReplace 等常用函数的参数和返回值以及用法进行介绍。

到此这篇关于一文带你了解Go语言标准库strings的常用函数和方法的文章就介绍到这了,更多相关Go语言strings内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Golang strings包常用字符串操作函数

    目录 func Contains func HasPrefix func HasSuffix func Replace func Split func ToLower func ToUpper func Repeat func Count func Index func Join 在编写代码的时候最常用到的就是字符串了,Golang 中的字符串统一使用 UTF-8 (属于Unicode编码的一种实现方式)进行编码,本篇文章将结合具体实例对常用的字符串操作函数进行介绍. func Contains

  • Go中strings的常用方法详解

    string操作在编程中具有极高的频率,那么string中有哪些有用的方法呢? 使用strings直接操作 Compare func Compare(a, b string) int 按照字典序比较两个字符串,通常情况下直接使用=,>,<会更快一些. Contains,ContainsAny 和 ContainsRune func Contains(s, substr string) bool func ContainsAny(s, chars string) bool func Contai

  • go语言中strings包的用法汇总

    strings 包中的函数和方法 // strings.go ------------------------------------------------------------ // Count 计算字符串 sep 在 s 中的非重叠个数 // 如果 sep 为空字符串,则返回 s 中的字符(非字节)个数 + 1 // 使用 Rabin-Karp 算法实现 func Count(s, sep string) int func main() { s := "Hello,世界!!!!!&quo

  • GO语言字符串处理Strings包的函数使用示例讲解

    目录 常用的字符串处理函数 (1) Contains (2) Join (3) Index (4) Repeat (5) Replace (6) Split (7) Trim (8) Fields 字符串转换 (1) Format (2) Parse (3) Append 常用的字符串处理函数 (1) Contains func Contains(s, substr string) bool 功能:字符串s中是否包含substr,返回bool值 演示如下: //查找一个字符串在另一个字符串中是否

  • 一文带你了解Go语言标准库strings的常用函数和方法

    目录 strings 库 高效拼接字符串 大小写转换 比较两个字符串 字符串的替换 按照某个分割标识分割字符串 去掉字符串左右两边的空格 将字符串[左边]或[右边]或[左右两边]所指定的字符(串)去掉 判断字符串是否以指定的字符串开头 判断字符串是否以指定的字符串结束 将字符串切片中的元素以指定字符串连接生成新字符串 查找子串是否存在于指定的字符串中 小结 strings 库 strings 库包含了许多高效的字符串常用操作的函数和方法,巧用这些函数与方法,能极大的提高我们程序的性能.下面介绍一

  • 一文带你了解Go语言标准库math和rand的常用函数

    目录 math 标准库 Abs 函数 Max 函数 Min 函数 Ceil Floor 函数 Trunc 函数 Dim 函数 Mod 函数 Pow 函数 Sqrt 函数 Cbrt 函数 Modf 函数 rand 代码示例 小结 math 标准库 math 标准库提供了一些 常量如 int64 类型的最大值.float64 类型的最大值等,和常用的数学计算函数. 常用函数 函数 说明 Abs(x float64) float64 传入 x 参数,返回 x 的绝对值 Max(x, y float64

  • 一文带你了解Java中的Object类及类中方法

    目录 1. Object类介绍 2. 重写toString方法打印对象 3. 对象比较equals方法 4. hashCode方法 1. Object类介绍 Object是Java默认提供的一个类.Java里面除了Object类,所有的类都是存在继承关系的.默认会继承Object父 类.即所有类的对象都可以使用Object的引用进行接收. 范例:使用Object接收所有类的对象 class Person{} class Student{} public class Test { public s

  • c语言标准库中字符转换函数和数字转换函数

    字符转换为数字: #include<stdlib.h> atoi();将字符转换为整型   例:char ch1;int i=atoi(ch1); atol();将字符转化为长整型  例:char ch2;long l=atol(ch2); atof();将字符转化为浮点型  例:char ch3;float f=atof(ch3); strtod(); 将字符串转化为双精度类型  例:string str1:double d=strtod(str1); strtol(); 将字符串转化为长整

  • PHP SPL标准库中的常用函数介绍

    PHP SPL标准库中提供了一些函数用来处理如自动加载.迭代器处理等. spl_autoload_extensions()添加spl_autoload()可加载的文件扩展名 spl_autoload_register()注册函数到SPL __autoload函数栈中. 复制代码 代码如下: /*test1.php*/ <?php class Test1 { }   /*test2.lib.php*/ <?php class Test2 { }   /*test.php*/ <?php /

  • 一文带你了解Go语言实现的并发神库conc

    目录 前言 worker池 Stream ForEach和map ForEach map 总结 前言 哈喽,大家好,我是asong:前几天逛github发现了一个有趣的并发库-conc,其目标是: 更难出现goroutine泄漏 处理panic更友好 并发代码可读性高 从简介上看主要封装功能如下: 对waitGroup进行封装,避免了产生大量重复代码,并且也封装recover,安全性更高 提供panics.Catcher封装recover逻辑,统一捕获panic,打印调用栈一些信息 提供一个并发

  • 一文带你入门Go语言中定时任务库Cron的使用

    目录 前言 快速开始 安装 导入 Demo Cron表达式格式 标准格式 预定义时间表 常用的方法介绍 new() AddJob() AddFunc() Start() 相关推荐 Go第三方库之cronexpr——解析 crontab 表达式 总结 前言 在平时的开发需求中,我们经常会有一些重复执行的操作需要触发执行,和系统约个时间,在几点几分几秒或者每隔几分钟跑一个任务,说白了就是定时任务,,想必大家第一反应都是linux的Crontab.其实定时任务不止使用系统自带的Crontab,在Go语

  • 一篇文章带你搞懂Go语言标准库Time

    目录 前言 时间类型 时间戳 时间间隔 操作时间 Add Sub Equal Before After 定时器 时间格式化 解析字符串格式的时间 总结 前言 在编程过程中,我们经常会用到与时间和日期相关的各种需求,下面来介绍 Go 语言中有关时间的一些基本用法. 时间类型 time.Time 类型表示时间.可以通过 time.Now() 函数获取当前的时间对象,然后获取时间对象的年月日时分秒等信息. 示例代码如下: func main() { now := time.Now() //获取当前时间

  • 一文带你了解Go语言fmt标准库输入函数的使用 原创

    目录 fmt 输入函数 Fscan.Fscanf.Fscanln Fscan Fscanf Fscanln Scan.Scanf.Scanln Scan Scanf Scanln Sscan.Sscanf.Sscanln 小结 fmt 输入函数 函数 描述 Fscan(r io.Reader, a ...any) (n int, err error) 从 r 中读取内容,以空格或换行符为分隔符,按顺序依次赋值给不同参数 Fscanf(r io.Reader, format string, a .

  • 一文带你深入探究Go语言中的sync.Map

    目录 1. Map 的基本实现原理 2. sync.Map 的实现原理 2.1 sync.Map 的结构体定义 2.2 sync.Map 的读取实现 2.3 sync.Map 的写入实现 2.4 sync.Map 的删除实现 2.5 sync.Map 的遍历实现 在 Go 语言中,有一个非常实用的并发安全的 Map 实现:sync.Map,它是在 Go 1.9 版本中引入的.相比于标准库中的 map,它的最大特点就是可以在并发情况下安全地读写,而不需要加锁.在这篇博客中,我们将深入探讨 sync

随机推荐