字符串操作

字符串是utf-8字符的一个序列,当字符为ascii码时占用1个字节,其他字符则根据需要占用2-4个字节。

go中字符串和c++、java、python不同(java始终占用2个字节),而同时根据需要占用1-4个字节。

字符串是值类型,且值不可变,就是创建完某个文本后你无法再次修改这个文本的内容。

字符串中的某个字符元素可以通过索引获取,如下:

字符串str的第一个元素:str[0]

第i个元素:str[i-1]

最后一个元素:str[len(str)-1]

注:获取字符串某个元素的地址这种操作是非法的,如:&str[i]

字符串操作

字符串的各种操作:
1、判断前后缀
strings.HasPrefix(s,prefix string) bool
strings.HasSuffix(s,suffix string) bool

2、字符串包含
strings.Contains(s, substr string) bool

3、判断子字符串或字符在父字符串中出现的位置(索引)
strings.Index(s,str string) int         返回字符串str在字符串s中首次出现位置的索引,-1表示字符串s不包含字符串str
strings.LastIndex(s,str string) int         返回字符串str在字符串s中的最后出现位置的索引,-1表示字符串s不包含字符串str
strings.IndexRune(s string, r rune) int     如果ch是非ascii编码字符,使用如下函数对字符进行定位

4、字符串替换
将字符串 str 中的前 n 个字符串 old 替换为字符串 new,并返回一个新的字符串,如果 n = -1 则替换所有字符串 old 为字符串 new
strings.Replace(str, old, new string, n int) string

5、统计字符串出现次数
strings.Count(s, str string) int

6、重复字符串
strings.Repeat(s, count int) string     重复 count 次字符串 s 并返回一个新的字符串

7、修改字符串大小写
strings.ToLower(s) string       改成小写
strings.ToUpper(s) string       改成大写

8、开头结尾字符串删除
strings.TrimSpace(s)        去除字符串开头和结尾的空白符号
strings.Trim(str, "He")     去除字符串开头和结尾的空白符号

9、字符串分割
strings.Fields(s)       利用空白作为分隔符将字符串分割为若干块,并返回一个 slice 。如果字符串只包含空白符号,返回一个长度为 0 的 slice
strings.Split(s, sep)   自定义分割符号对字符串分割,返回 slice

10、拼接slice到字符串
strings.Join(sl []string, sep string) string    将元素类型为 string 的 slice 使用分割符号来拼接组成一个字符串

11、字符串与其它类型的转换:与字符串相关的类型转换都是通过 strconv 包实现的
数字转字符串:
strconv.Itoa(i int) string          返回数字 i 所表示的字符串类型的十进制数
strconv.FormatFloat(f float64, fmt byte, prec int, bitSize int) string      将 64 位浮点型的数字转换为字符串

字符串转数字:
strconv.Atoi(s string) (i int, err error)           将字符串转换为 int 型
strconv.ParseFloat(s string, bitSize int) (f float64, err error)    将字符串转换为 float64 型

demo

package mainimport ("fmt""strconv""strings"
)func main() {str := "Hello ,World,cc"//判断前后缀fmt.Println("str prefix is:", strings.HasPrefix(str, "he"))fmt.Println("str Suffix is:", strings.HasSuffix(str, "d"))//判断是否包含d字符fmt.Println("str contain:", strings.Contains(str, "d"))//判断字符出现位置索引fmt.Println("the position of the first instance of is l is", strings.Index(str, "l"))fmt.Println("the position of the last instance of is l is", strings.LastIndex(str, "l"))fmt.Println("the position of the last instance of is b is", strings.Index(str, "b"))//替换字符串//fmt.Println("the hello world is change:", strings.Replace(str, "l", "o", -1))                 //替换所有l为ofmt.Println("the hello world is change:", strings.Replace(str, "l", "o", 2)) //替换2个l为o//统计字符串出现次数fmt.Println("the l in s is:", strings.Count(str, "l"))//重复字符串str 2次,如果count为1则相当于没有变化fmt.Println("the repeat s is:", strings.Repeat(str, 2))//修改字符串大小写fmt.Println("the Lower s is:", strings.ToLower(str))fmt.Println("the Upper s is:", strings.ToUpper(str))//开头结尾字符串修剪fmt.Println("the trim s is:", strings.TrimSpace(str))fmt.Println("the e trim s is:", strings.Trim(str, "he"))//字符串分割fmt.Println("the split1 s is:", strings.Fields(str)) //以空白符分割字符串,返回切片fmt.Println("the split2 s is:", strings.Split(str, ","))//字符串拼接s1 := strings.Split(str, ",")for _, v1 := range s1 {fmt.Println(v1)}s2 := strings.Join(s1, ";")fmt.Println(s2)//字符串与其他类型的转换var orig string = "666"var an intvar newS stringfmt.Printf("The size of ints is: %d\n", strconv.IntSize)an, _ = strconv.Atoi(orig)fmt.Printf("The integer is: %d\n", an)an = an + 5newS = strconv.Itoa(an)fmt.Printf("The new string is: %s\n", newS)}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/62851.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis全局命令

"那篝火在银河尽头~" Redis-cli命令启动 现如今,我们已经启动了Redis服务,下⾯将介绍如何使⽤redis-cli连接、操作Redis服务。客户端与服务端交互的方式有两种: ● 第⼀种是交互式⽅式: 后续所有的操作都是通过交互式的⽅式实现,…

Java设计模式:一、六大设计原则-06:依赖倒置原则

文章目录 一、定义:依赖倒置原则二、模拟场景:依赖倒置原则三、违背方案:依赖倒置原则3.1 工程结构3.2 抽奖系统**3.2.1 定义抽奖用户类**3.2.2 抽奖控制 3.3 单元测试 四、改善代码:依赖倒置原则4.1 工程结构4.2 抽奖控制改善4.2…

vnc与windows之间的复制粘贴

【原创】VNC怎么和宿主机共享粘贴板 假设目标主机是linux,终端主机是windows(就是在windows上使用VNC登陆linux) 在linux中执行 vncconfig -nowin& 在linux选中文字后,无需其他按键,直接在windows中可以黏贴。 …

操作系统备考学习 day1 (1.1.1-1.3.1)

操作系统备考学习 day1 计算机系统概述操作系统的基本概念操作系统的概念、功能和目标操作系统的四个特征并发共享虚拟异步 操作系统的发展和分类操作系统的运行环境操作系统的运行机制 年初做了一个c的webserver 的项目,在学习过程中已经解除部分操作系统的知识&am…

K-Means(K-均值)聚类算法理论和实战

目录 K-Means 算法 K-Means 术语 K 值如何确定 K-Means 场景 美国总统大选摇争取摆选民 电商平台用户分层 给亚洲球队做聚类 ​编辑 其他场景 K-Means 工作流程 K-Means 开发流程 K-Means的底层代码实现 K-Means 的评价标准 K-Means 算法 对于 n 个样本点来说&am…

Golang Gorm 一对多的添加

一对多的添加有两种情况: 一种是添加用户的时候同时创建文章其次是创建文章关联已经存在的用户 添加用户的时候同时创建文章 package mainimport ("gorm.io/driver/mysql""gorm.io/gorm" )// User 用户表 一个用户拥有多篇文章 type User stru…

探索未来金融科技 SCF新加坡举办启动盛会

金融科技的热潮涌向新加坡,令人瞩目的SCF金融公链启动会于8月13日隆重举行。这场盛宴不仅为金融科技领域注入了新的活力,更为广大投资者、合作伙伴以及热衷区块链发展的人士提供了一次宝贵的交流机会。 在SCF金融公链启动会上,William Thomps…

【附安装包】Eplan2022安装教程

软件下载 软件:Eplan版本:2022语言:简体中文大小:1.52G安装环境:Win11/Win10/Win8/Win7硬件要求:CPU2.5GHz 内存4G(或更高)下载通道①百度网盘丨64位下载链接:https://pan.baidu.co…

Linux下的系统编程——进程(七)

前言: 程序是指储存在外部存储(如硬盘)的一个可执行文件, 而进程是指处于执行期间的程序, 进程包括 代码段(text section) 和 数据段(data section), 除了代码段和数据段外, 进程一般还包含打开的文件, 要处理的信号和CPU上下文等等.下面让我们开始对Linux进程的学…

Java运行时jar时终端输出的中文日志是乱码

运行Jar时在控制台输出的中文日志全是乱码,这是因为cmd/bash默认的编码是GBK,只要把cmd的编码改成UTF-8即可 两种方式修改:临时修改和注册表永久修改 临时修改 只对当前的cmd页面有效,关闭后重新打开都会恢复成GBK, 打开cmd&am…

【数据结构】十字链表的画法

十字链表的基本概念 有向边又称为弧 假设顶点 v 指向 w,那么 w 称为弧头,v 称为弧尾 顶点节点采用顺序存储 顶点节点 data:存放顶点的信息firstin:指向以该节点为终点(弧头)的弧节点firstout&#xff1…

gRPC之gRPC认证

1、gRPC认证 前面篇章的gRPC都是明文传输的,容易被篡改数据,本章将介绍如何为gRPC添加安全机制。 gRPC默认内置了两种认证方式: SSL/TLS认证方式 基于Token的认证方式 同时,gRPC提供了接口用于扩展自定义认证方式。 1.1 TLS…

Redis 教程 - Redis 基本操作

Redis 教程 - Redis 基本操作 Redis(Remote Dictionary Server)是一个开源的内存数据库,它提供了键值对存储和多种数据结构的支持,被广泛应用于缓存、消息队列、计数器等场景。本教程将介绍 Redis 的基本操作,包括连接…

001_C++语法基础

C++语法基础 所有C++语法要用英文区分大小写每个语句写完以分号结束C++标准输入输出头文件iostream 若想通过C++实现数据的输入和输出,需要导入标准输入输出头文件 #include <iostream>标准输入输出头文件<iostream>中包含了cin输入语句和cout输出语句 标准命名…

想系列服务迁移专有云效实操

想系列服务迁移专有云效实操 1注册应用 查看jenkins脚本是否需要修改代码编译路径 gemdale_jenkins/maven3-service/k8s-image/maven3-service-deploy.sh Jenkins上的打包路径 service_tgt_path s e r v i c e w s / t a r g e t / service_ws/target/ servicew​s/target/ser…

前端三大Css处理器之Less

Less是Css预处理器之一&#xff0c;分别有Sass、Less、Stylus这三个。 Lesshttps://lesscss.org/ Less是用JavaScript编写的&#xff0c;事实上&#xff0c;Less是一个JavaScript库&#xff0c;他通过混合、变量、嵌套和规则设置循环扩展了原生普通Css的功能。Less的少数…

k8s之存储篇---存储类StorageClass

介绍 StorageClass 为管理员提供了描述存储"类"的方法。 不同的类型可能会映射到不同的服务质量等级或备份策略&#xff0c;或是由集群管理员制定的任意策略。 Kubernetes 本身并不清楚各种类代表的什么。这个类的概念在其他存储系统中有时被称为"配置文件&quo…

Unity3D Pico VR 手势识别

视频链接 本文章使用的 Unity3D版本: 2021.3.6 , Pico SDK 230 ,Pico OS v.5.7.1 硬件Pico 4 Pico SDK可以去Pico官网下载SDK 导入SDK 第一步&#xff1a;创建Unity3D项目 第二步&#xff1a;导入 PICO Unity Integration SDK 选择 Windows > Package Manager。 …

vue3路由跳转以及传参。和vue2路由跳转传参的区别

路由的安装和引入以及注册就不过多赘述&#xff0c;直接说区别和怎么跳转页面 vue2路由跳转以及传递参数 vue2只需要创建好router文件夹和index.js&#xff0c;配置好我们的路由&#xff0c;在main.js引入 import router from "/router"; // vue路由app.use(route…

【ES6】—类与继承

一、 定义类 class People {constructor (name, age) {this.name namethis.age age}showName () {console.log(this.name)} } let p1 new People(xiaoxiao, 30) console.log(p1) // People {name: xiaoxiao, age: 30}小节&#xff1a; 使用class关键字声明类使用construc…