标准库-strings

前言

标准库strings用于处理utf-8编码的字符串。

字符串比较-Compare

func Compare(a,b string) int
  • 若 a==b ,则返回0;若 a <b ,则返回 -1;若 a>b ,则返回 1。
  • 字符串的比较方法是根据单个字符的ASCII编码。

示例代码:

package main
import (
"fmt"
"strings"
) func main() {
var str1 string = "hello"
var str2 string = "world" fmt.Println(strings.Compare(str1,str2)) // -1
fmt.Println(strings.Compare(str2,str1)) // 1
fmt.Println(strings.Compare(str1,str1)) // 0
}

检测字符串是否包含子串-Contains

func Contains(s,substr string) bool

示例代码:

package main
import (
"fmt"
"strings"
) func main() {
fmt.Println(strings.Contains("hello world","hello")) // true
fmt.Println(strings.Contains("hello world","hel123")) // false
}

大小写转换

函数原型:

func ToUpper(substr string) string
func ToLower(substr string) string
func ToTitle(substr string) string

示例代码:

package main

import (
"fmt"
"strings"
) func main() {
var str1 string = "heLLo, goLang"
fmt.Println(strings.ToUpper(str1)) // HELLO, GOLANG
fmt.Println(strings.ToLower(str1)) // hello, golang
fmt.Println(strings.ToTitle(str1)) // HELLO, GOLANG
}

统计子字符串出现的次数

函数原型:

func Count(str,substr string) int

示例代码:

package main

import (
"fmt"
"strings"
) func main() {
var str1 string = "heLLo, goLang"
var str2 string = "o"
fmt.Println(strings.Count(str1,str2))
}

判断字符串的前后缀

函数原型:

func HasPrefix(str,substr string) bool
func HasSuffix(str,substr string) bool

示例代码:

package main

import (
"fmt"
"strings"
) func main() {
var str1 string = "heLLo, goLang"
var str2 string = "o"
var str3 string = "he"
var str4 string = "Lang"
fmt.Println(strings.HasPrefix(str1, str2)) // false
fmt.Println(strings.HasPrefix(str1, str3)) // ture
fmt.Println(strings.HasSuffix(str1, str4)) // ture
}

分割和连接

函数原型:

func Split(str,separator string) []string
func Join(strs []string) string

示例代码:

package main

import (
"fmt"
"strings"
) func main() {
var str1 string = "heLLo,goLang"
fmt.Println(strings.Split(str1, ",")) // [heLLo goLang]
for _,v := range strings.Split(str1, ",") {
fmt.Println(v)
} fmt.Println(strings.Join([]string{"Hello","Golang","World"}, "、")) // Hello、Golang、World
}

索引

这个操作能获取指定字符首次出现的位置,通常用来判断子字符串在对应字符串中的位置。

函数原型:

func Index(str,substr string) int

示例代码:

package main

import (
"fmt"
"strings"
) func main() {
var str1 string = "heLLo,goLang"
fmt.Println(strings.Index(str1, "LL")) // 2
}

清洗

清洗操作可以将字符串两端的一些字符删掉,常用来删除字符串两端的空格。

函数原型:

func Trim(s, cutset string) string
func TrimLeft(s, cutset string) string
func TrimRight(s, cutset string) string
func TrimPrefix(s, prefix string) string
func TrimSuffix(s, suffix string) string
func TrimSpace(str string) string

示例代码:

package main

import (
"fmt"
"strings"
) func main() {
var str1 string = " heLLo,goLang "
var str2 string = "123heLLo,goLang123"
fmt.Println(strings.Trim(str1, " ")) // heLLo,goLang
fmt.Println(strings.Trim(str2, "123")) // heLLo,goLang
// 专门用来清除两端空格的函数
fmt.Println(strings.TrimSpace(str1)) // heLLo,goLang
}

替换

清洗操作只能完成首尾的空格或者指定字符的替换,要完成更为复杂的操作则要调用NewReplacer()函数。

函数原型:

func Replace(s, old, new string, n int) string {}
func NewReplacer(oldnew ...string) *Replacer

示例代码:

package main

import (
"fmt"
"strings"
) func main() {
var str1 string = " heLLo,goLang "
newReplacer1 := strings.NewReplacer(" ","++", ",", "==") // ++++heLLo==goLang++++
fmt.Println(newReplacer1.Replace(str1))
}

参考文章

  • 官方文档
  • 谢伟 - 《Go语言项目开发上手指南》机械工业出版社

【go笔记】标准库-strings的更多相关文章

  1. go学习笔记-标准库

    标准库 名称 摘要 archive tar tar包实现了tar格式压缩文件的存取. zip zip包提供了zip档案文件的读写服务. bufio bufio 包实现了带缓存的I/O操作. built ...

  2. C++ primer笔记 -标准库类型

    最重要的两个标准库类型:string和vector string 类型的输入操作符: 1.读取并忽略开头所有的空白符 2.读取字符直至再次遇到空白字符,读取终止 string对象的基本操作: stri ...

  3. Go笔记-标准库的介绍

    [unsafe]包含了一些打破Go语言“类型安全”的命令,一般的程序中不会被使用,可用在C/C++程序的调用中 [syscall]底层的外部包,提供了操作系统底层调用的基本接口 [os/exec]提供 ...

  4. C++ Primer 笔记——标准库类型string

    1.如果使用等号初始化一个变量,实际上执行的是拷贝初始化,编译器吧等号右侧的初始值拷贝到新创建的对象中去:如果不使用等号则执行的是直接初始化. std::string str = "Test ...

  5. python笔记-标准库unittest

    unittest核心工作原理 unittest中最核心的四个概念是:test case, test suite, test runner, test fixture. 一个TestCase的实例就是一 ...

  6. 手写编程语言-如何为 GScript 编写标准库

    版本更新 最近 GScript 更新了 v0.0.11 版本,重点更新了: Docker 运行环境 新增了 byte 原始类型 新增了一些字符串标准库 Strings/StringBuilder 数组 ...

  7. 《C++ Primer》学习笔记【第二部分 C++标准库】

    第8章 IO库 IO对象不能复制,即1.IO对象不能存储在vector或其他容器中   2.如果需要传递或返回IO对象,必须传递或返回指向该对象的指针或引用. 一般情况下,如果要传递IO对象以便对它进 ...

  8. PHP标准库 (SPL) 笔记

    简介 SPL是Standard PHP Library(PHP标准库)的缩写. The Standard PHP Library (SPL) is a collection of interfaces ...

  9. STL笔记(6)标准库:标准库中的排序算法

    STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew A ...

  10. python基础课程_学习笔记20:标准库:有些收藏夹——os

    标准库:有些收藏夹 os os模块为您提供访问多个操作系统服务特征. os和它的子模块os.path还包含一些用于检查.构造.删除文件夹和文件的函数,以及一些处理路径的函数. os模块中一些重要函数和 ...

随机推荐

  1. 使用NineData定制企业级数据库规范

    1. 为什么需要数据库规范? 在企业级应用中,数据库是非常重要的一部分,它们存储着公司的核心数据,包括客户信息.订单.产品信息等等.如果这些数据没有得到妥善的管理,那么就会导致数据不一致.数据丢失.数 ...

  2. Grafana系列-统一展示-6-Zabbix仪表板

    系列文章 Grafana 系列文章 Notes: 关于 Grafana系列-统一展示-6-Zabbix 数据源, 其实已经在之前的文章: 使用 Grafana 统一监控展示 - 对接 Zabbix 里 ...

  3. 2022-11-07:给你一个 n 个节点的 有向图 ,节点编号为 0 到 n - 1 ,其中每个节点 至多 有一条出边。 图用一个大小为 n 下标从 0 开始的数组 edges 表示, 节点 i 到

    2022-11-07:给你一个 n 个节点的 有向图 ,节点编号为 0 到 n - 1 ,其中每个节点 至多 有一条出边. 图用一个大小为 n 下标从 0 开始的数组 edges 表示, 节点 i 到 ...

  4. 2021-11-27:给定一个数组arr,长度为N,做出一个结构,可以高效的做如下的查询: 1) int querySum(L,R) : 查询arr[L...R]上的累加和; 2) int query

    2021-11-27:给定一个数组arr,长度为N,做出一个结构,可以高效的做如下的查询: int querySum(L,R) : 查询arr[L-R]上的累加和; int queryAim(L,R) ...

  5. JDBC-Utils层的简单运用

    项目中JDBC的Utils层运行需要以下六个步骤 //1.定义属性为空 private static String driver = null; private static String url = ...

  6. Simple CTF

    来自tryhackme的Simple CTF IP:10.10.27.234 信息收集 端口扫描 nmap -sV -T4 10.10.27.234 可以看到三个端口 21/tcp 打开 ftp vs ...

  7. C++面试八股文:static和const的关键字有哪些用法?

    某日二师兄参加XXX科技公司的C++工程师开发岗位第7面: 面试官:C++中,static和const的关键字有哪些用法? 二师兄:satic关键字主要用在以下三个方面:1.用在全局作用域,修饰的变量 ...

  8. ChatGPT玩法(三):AI玩转PPT

    前言 在线免费体验ChatGpt:https://www.topgpt.one 作为许多职场人士的必备工具,PPT制作一直是一个琐碎而费时的任务.但最近我发现了一个非常有用的工具网站,它可以通过人工智 ...

  9. C#/VB.NET:快速而简单的免费SVG到PDF转换技巧

    在日常工作中,我们常常需要将SVG转换为PDF格式.这是因为SVG格式的图像在打印时可能会出现问题,例如失去分辨率或无法正确适应纸张大小.与此相比,PDF格式则专门用于打印和共享文档,可以确保高质量输 ...

  10. @Target元注解的使用

    @Target注解标记另外的注解用于限制此注解可以应用哪种Java元素类型.先看Java SE 8中@Target是如何声明的: package java.lang.annotation; publi ...