Go语言字符串基础

news/2024/4/27 23:28:40/文章来源:https://blog.csdn.net/weixin_71646897/article/details/130571433

 

目录

字符串基础

合并和分割字符串

分割

合并

判断是否包含

strings.Contains()

查找子串出现的位置

strings.Index()

strings.LastIndex()


字符串基础

1.字符串是由一串Unicode字符组成的序列,每个Unicode字符都占用一个或多个字节的存储空间。

2.字符串在Go语言中用双引号("")或反引号(``)括起来表示,例如:"Hello, World!"和Hello, World!

3.字符串可以通过下标访问每个字符,下标从0开始,例如:s[0]表示字符串s中的第一个字符。

4.字符串可以使用加号(+)进行连接,例如:"Hello" + "World"会得到"HelloWorld"。

5.字符串可以使用len()函数获取长度,例如:len("Hello, World!")会得到13。

6.字符串可以使用for循环遍历每个字符,例如:

s := "Hello, World!"
for i := 0; i < len(s); i++ {fmt.Printf("%c ", s[i])
}

1.字符串是不可变的,一旦创建就不能修改,如果要修改字符串,需要将其转换为字节数组或rune数组。

2.字符串可以使用strconv包进行类型转换,例如将字符串转换为整数或浮点数。

3.字符串可以使用strings包提供的函数进行各种操作,例如:

(1)strings.Contains(s, substr) 判断字符串s是否包含子串substr

(2)strings.Index(s, substr) 返回子串substr在字符串s中第一次出现的位置,如果不存在则返回-1

(3)strings.LastIndex(s, substr) 返回子串substr在字符串s中最后一次出现的位置,如果不存在则返回-1

(4)strings.Replace(s, old, new, n) 将字符串s中的前n个old子串替换为new子串,如果n为-1,则替换所有old子串

(5)strings.Split(s, sep) 将字符串s按照分隔符sep分割成多个子串,返回一个字符串切片

(6)strings.Trim(s, cutset) 将字符串s前后的cutset字符去除,返回一个新的字符串

合并和分割字符串

分割

需要先导入strings包,strings包提供了Split()、SplitN()、SplitAfter()、SplitAfterN()四个函数用来处理分割字符串

(1)Split()函数的定义如下:

func Split(s, sep string) []string

s为被分割的字符串,sep为分隔符,string为分隔符的类型

(2)SplitN()函数的定义如下:

func SplitN(s, sep string, n int) []string

s为被分割的字符串,sep为分隔符,string为分隔符的类型,n为控制分割的片数

(3)SplitAfter()函数的定义如下:

func SplitAfter(s, sep string)

s为被分割的字符串,sep为分隔符,string为分隔符的类型

(4)SplitAfterN()函数的定义如下:

func SplitAfterN(s, sep string, n int) []string

s为被分割的字符串,sep为分隔符,string为分隔符的类型,n为控制分割的片数

这四个函数都是通过sep参数对传入的字符串参数s进行分割的,返回类型为[]string,如果sep参数为空,则会分成一个UTF-8的字符。

例如

使用strings.Split() 来分割字符串,需要引入strings包

str := "123-456-789"arr := strings.Split(str, "-")fmt.Println(arr)//分割结果为: [123 456 789]

合并

Go语言strings包中提供了一个Join()函数,用来合并字符串,源码的格式如下:

func Join(elems []string, sep string) string

前一个参数是接受的字符串数组,后一个参数是sep分隔符

例如

使用strings.Join()来把切片连接成字符串

str := "123-456-789"arr := strings.Split(str, "-")str2 := strings.Join(arr, " ")fmt.Println(str2)//拼接后的结果为: 123 456 789

判断是否包含

strings.Contains()

使用strings.Contains() 来判断是否包含,该函数的定义如如下:

func Contains(s, substr string) bool

s为接受的字符串,substr为需要查判断是否存在的字符串

例如

str1 := "你好GoLang"str2 := "GoLang"flag := strings.Contains(str1, str2)fmt.Println(flag)//输出的值为:true

查找子串出现的位置

strings.Index()

使用strings.Index()来正向查找子串出现的位置,该函数格式如下:

func Index(s, substr string) int

s为被查找的字符串,substr为需要查找的子串,返回子串substr在字符串s中第一次出现的位置,如果不存在则返回-1

例如

str1 := "I love you"str2 := "l"num := strings.Index(str1, str2)fmt.Println(num)//输出结果为: 2

strings.LastIndex()

使用strings.Index()来反向查找子串出现的位置,该函数格式如下:

func LastIndex(s, substr string) int

s为被查找的字符串,substr为需要查找的子串,从后往前查找符合要求的子串,但需要注意返回的位置是该子串从前向后查找到的位置,如果不存在则返回-1

例如

str1 := "I love you"str2 := "o"num := strings.LastIndex(str1, str2)fmt.Println(num)//输出结果为: 8

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

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

相关文章

CSS--定位

01-定位 作用&#xff1a;灵活的改变盒子在网页中的位置 实现&#xff1a; 1.定位模式&#xff1a;position 2.边偏移&#xff1a;设置盒子的位置 leftrighttopbottom 相对定位 position: relative 特点&#xff1a; 不脱标&#xff0c;占用自己原来位置显示模式特点保…

技术领先、“忠”于业务,用友走出多维数据库的价值之路

本文转自科技商业 作者 于洪涛 对于当今的企业而言&#xff0c;精细化管理&#xff0c;已经成为发展之源&#xff0c;甚至是生存之本。 尤其是随着数字化和智能化转型的推进&#xff0c;在企业经营管理过程中&#xff0c;数据正在日益发挥更为关键的要素作用。 相比过去&…

浅学Go下的ssti

前言 作为强类型的静态语言&#xff0c;golang的安全属性从编译过程就能够避免大多数安全问题&#xff0c;一般来说也唯有依赖库和开发者自己所编写的操作漏洞&#xff0c;才有可能形成漏洞利用点&#xff0c;在本文&#xff0c;主要学习探讨一下golang的一些ssti模板注入问题…

uniapp实现微信小程序横屏适配问题demo效果(整理)

使用VMIN进行布局 先了解css3的两个属性vmax和vmin vmax 相对于视口的宽度或高度中较大的那个。其中最大的那个被均分为100单位的vmax vmin 相对于视口的宽度或高度中较小的那个。其中最小的那个被均分为100单位的vmin竖屏布局的时候&#xff0c;750rpx就是竖屏布局屏幕的宽度…

camunda的Java委托如何使用

一、camunda的Java委托有什么用途 在Camunda中&#xff0c;Java委托是一种用于在流程执行期间执行自定义逻辑的Java类。使用Java委托&#xff0c;您可以在流程执行期间通过Java代码实现各种复杂的业务逻辑。 以下是一些使用Java委托的常见用途&#xff1a; 1、计算值&#x…

搞懂 API,API 常见技术使用场景分享

API&#xff08;应用程序编程接口&#xff09;是一种允许软件应用程序之间相互交互和通信的技术。以下是API常用的使用场景&#xff1a; 应用程序开发 API通常被用于网站或应用程序的开发中&#xff0c;以便在不同平台、语言及数据库之间获取数据或进行消息传递。例如&#xff…

搭建本地仓库源

一、如何搭建仓库源 之前讲了定制ISO的方法&#xff1a;使用chroot定制系统&#xff0c;但有时候我们想自定义的安装包不在上游的仓库源中&#xff0c;在我们本地应该怎么办呢&#xff1f;如果我们将deb包拷贝到iso目录再安装有点过于麻烦了&#xff0c;而且还可能需要手动处理…

113.【Vue-细刷-04】

Vue-03 (二十四)、浏览器存储(WebStorage)1.本地缓存(LocalStorage)(1). 模仿本地缓存-未用JSON转字符串(2).模拟本地缓存-使用JSON转字符串 2.会话缓存(Session Storage)(1).模拟会话缓存(2).会话缓存和本地缓存的区别(3).JSON转换与JSON解析 3.todos案列_本地缓存版(1).mount…

flink集群安装部署

1.下载 官网下载&#xff1a;Downloads | Apache Flink 阿里网盘下载&#xff08;包含依赖包&#xff09;&#xff1a;阿里云盘分享 提取码&#xff1a;9bl2 2.解压 tar -zxvf flink-1.12.7-bin-scala_2.11.tgz -C ../opt/module 3.修改配置文件 cd flink-1.12.7/conf/ …

【Java】javafx | 打包成jar包

一、说明 1、javafx项目 2、maven管理 二、解决方案 1&#xff09;加入maven插件 <build><resources><resource><!-- 这里是放在 src/main/java--><directory>src/main/java</directory><includes><include>**/*.properties&…

深度学习 - 46.DIN 深度兴趣网络

目录 一.引言 二.摘要 ABSTRACT 三.介绍 INTRODUCTION 1.CTR 在广告系统的作用 2.传统 MLP 存在的问题 3.DIN 的改进 四.近期工作 RELATEDWORK 1.传统推荐算法 2.用户行为抽取 五.背景 BACKGROUD 六.深度兴趣网络 DEEP INTEREST NETWORK 1.特征表示 Feature Repres…

【操作系统】从操作系统底层出发,成为更好的程序员

冯老爷子的模型 首先&#xff0c;我们从一个问题开始(&#xffe3;∇&#xffe3;)/ 为什么需要程序员&#xff1f; 早期的计算机程序是硬件化的&#xff0c;即使用各种门电路组装出一个固定的电路板&#xff0c;这个电路板只能用于执行某个特定的程序&#xff0c;如果需要修…

Java并发编程实践学习笔记(三)——共享对象之可见性

目录 1 过期数据 2 非原子的64位操作 3 锁和可见性 4 Volatile变量&#xff08;Volatile Variables&#xff09; 在单线程环境中&#xff0c;如果向某个变量写入值&#xff0c;在没有其他写入操作的情况下读取这个变量&#xff0c;那么总能得到相同的值。然而&…

ALOHA 开源机械臂(Viper 300 Widow X 250 6DOF机械臂组成)第一部分

软件简介&#xff1a; ALOHA 即 A Low-cost Open-source Hardware System for Bimanual Teleoperation&#xff0c;是一个低成本的开源双手遥控操作硬件系统&#xff0c;即开源机械臂。其算法 Action Chunking with Transformers (ACT) 采用了神经网络模型 Transformers&#…

C#学习笔记--实现一个可以重复权重并且能够自动排序的容器--MultiplySortedSet

目录 前言SortedSetC#自带类型自定义类SortedSet权值重复 需求自定义容器 -- MultiplySortedSet核心实现思路 MultiplySortedSet 使用C#自带类型自定义类 前言 最近需要在C#中实现一个功能 有一个容器&#xff0c;该容器能自动对里面的元素进行排序&#xff0c;类似C的优先队列…

FS5175AE降压型1-4节锂电池充电芯片

FS5175AE是一款工作于5V到24V的多串锂电池同步开关降压充电管理芯片。内置MOS管集成了低导通阻抗的NMOS&#xff0c;FS5175AE采用1MHz同步开关架构&#xff0c;实现高 效率充电并简化外围器件&#xff0c;降低BOM成本。通过调节检测电阻&#xff0c;可实现**2A充电电流&#xf…

SpringCloud(22):Sentinel对Feign的支持

Sentinel 适配了 Feign组件。如果想使用&#xff0c;除了引入 spring-cloud-starter-alibaba-sentinel 的依赖外还需要 2个步骤&#xff1a; 配置文件打开 Sentinel 对 Feign 的支持&#xff1a;feign.sentinel.enabledtrue加入 spring-cloud-starter-openfeign 依赖使 Sentin…

基于Linux系统在线安装RabbitMQ

一、前言 二、Erlang下载安装 三、RabbitMQ下载安装 三、RabbitMQ Web界面管理 一、前言 本次安装使用的操作系统是Linux centOS7。 二、Erlang下载安装 在确定了RabbitMQ版本号后&#xff0c;先下载安装Erlang环境。下面演示操作过程&#xff1a; Erlang下载链接&#…

[工具]Pytorch-lightning的使用

Pytorch-lightning的使用 Pytorch-lightning介绍Pytorch-lightning与Pytorch的区别Pytorch-lightning框架的优势Pytorch-lightning框架 重要资源 Pytorch-lightning介绍 这里介绍Pytorch_lighting框架. Pytorch-lightning与Pytorch的区别 Pytorch-lightning可以简单的看作是…

强化学习p3-策略学习

Policy Network (策略网络) 我们无法知道策略函数 π \pi π所以要做函数近似&#xff0c;求一个近似的策略函数 使用策略网络 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(a∣s;θ) 去近似策略函数 π ( a ∣ s ) \pi(a|s) π(a∣s) ∑ a ∈ A π ( a ∣ s ; θ ) 1 \sum_{a\in …