当前位置: 首页 > news >正文

【GO语言卵细胞级别教程】06.GO语言的字符串操作

【GO语言卵细胞级别教程】06.GO语言的字符串操作

温馨提示:
本文中使用的项目模块均是 【05.项目创建和函数讲解】 中创建的,具体如何创建项目,请参考

【GO语言卵细胞级别教程】05.项目创建和函数讲解

目录:

  • 【GO语言卵细胞级别教程】06.GO语言的字符串操作
  • 1.字符串函数
    • 1.1 基本操作
    • 1.2 字符串高级操作

1.字符串函数

1.1 基本操作

  1. 统计字符串的长度使用 len(str)
  2. 字符串遍历:因为中文和英文在utf8编码中占用字节不一样,所以遍历这里需要注意下
1. 方式1:当有中文的时候要注意可以使用range str
2. 方式2:可以使字符串转为切片再使用,防止出现中文的时候r := []rune(str), 然后再进行遍历即可 fot i:=0; i < len(r);i++{r[i]}
1. 方式3:直接遍历会出现乱码情况如果字符串中有中文的话for i:=0; i< len(str);i++{str[i]}
  1. 字符串转整数:strconv.Atoi(“66”) 返回两个值 result, err
  2. 整数转字符串: strconv.ItoA(888) 返回转换的结果
  3. 子串是否包含在指定的字符串中
strings.Contains("javajava", "ava") 返回的是bool
  1. 统计一个字符串有几个指定的子串
strings.Count("javajava", "ava") 返回个数
  1. 区分大小写比较字符串和不区分比较
1. 区分比较
str == "xxx"
2. 区分比较
strings.EqualFold("go", "GO")
  1. 返回子串在字符串第一次出现的索引值,如果没有返回默认值-1;
strings.Index("javajava", "ava")  // 1
  1. 总结实战
package mystudy
// 字符串基础知识
import ("fmt""strconv""strings"
)func MyPrintln(str string){if str == ""{str = "myPrintln"}fmt.Println()fmt.Println("--------", str, "--------")
}func Zfc(){// 1.统计字符串的长度fmt.Println("1.统计字符串的长度")var str string = "新年好Happy"// 打印结果是14,因为一个英文字符utf8 占用8个字节,一个汉字占用3个字节fmt.Println("字符串:'新年好Happy:长度'", len(str))// 2.对字符串进行遍历fmt.Println("2.对字符串进行遍历")for i, value := range str {fmt.Println("Ascii 索引:", i, " 值:", value)fmt.Printf("中文索引:%d 值:%c\n", i, value)}// 2.对字符串的遍历,如果有中文会出现乱码情况,全英文的话可以使用这个方法进行打印fmt.Printf("直接遍历打印:")for i:=0;i < len(str); i++{fmt.Printf("%c", str[i])}MyPrintln("")// 2.使用切片方式遍历,可以直接打印出中文或者英文不乱码r := []rune(str)fmt.Println("切片方式r:", r)for i := 0 ; i < len(r); i++{fmt.Printf("%c", r[i])}MyPrintln("")// 3.整数转字符串var numInt int = 888888str2 := strconv.Itoa(numInt)fmt.Printf("str2=%v, str2 type=%T\n", str2, str2)// 4.字符串转整型 ASCII to Integer 缩写 Atoi,转换失败 err输出提示,numInt默认值0numInt, err := strconv.Atoi("89890i")fmt.Println(numInt, err)// 5.查找子串是否在指定的字符串中, 返回的是boolresult := strings.Contains("pythonjavacgoscalapython", "go")fmt.Println("查找子串是否在指定的字符串中:", result)MyPrintln("统计一个字符串有几个指定的字串")// 6.统计一个字符串有几个指定的字串subStrCount := strings.Count("pythonjavacgoscalapythongo", "go")fmt.Println("统计一个字符串有几个指定的字串:", subStrCount)// 7.不区分大小写字符串比较fmt.Println(strings.EqualFold("java", "JavA")) // true// 8.区分大小写字符串比较 fmt.Println("java" == "JavA") // false// 9.返回字符串第一次出现的索引值,没有的话返回默认值-1// strings.Index 是按照字节来统计下标的,所以当出现中文的时候下标和看到的字符串是不一样的fmt.Println(strings.Index("pythonjavacgoscalapythongo", "go"))fmt.Println(strings.Index("javajava", "ava"))fmt.Println(strings.Index(str, "年"))fmt.Printf("%c", str[strings.Index(str, "H")])}// 输出结果
1.统计字符串的长度
字符串:'新年好Happy:长度' 14
2.对字符串进行遍历
Ascii 索引: 0  值: 26032
中文索引:0 值:新
Ascii 索引: 3  值: 24180
中文索引:3 值:年
Ascii 索引: 6  值: 22909
中文索引:6 值:好
Ascii 索引: 9  值: 72
中文索引:9 值:H
Ascii 索引: 10  值: 97
中文索引:10 值:a
Ascii 索引: 11  值: 112
中文索引:11 值:p
Ascii 索引: 12  值: 112
中文索引:12 值:p
Ascii 索引: 13  值: 121
中文索引:13 值:y
直接遍历打印:æ°å¹´å¥½Happy
-------- myPrintln --------
切片方式r: [26032 24180 22909 72 97 112 112 121]
新年好Happy
-------- myPrintln --------
str2=888888, str2 type=string
0 strconv.Atoi: parsing "89890i": invalid syntax
查找子串是否在指定的字符串中: true-------- 统计一个字符串有几个指定的字串 --------
统计一个字符串有几个指定的字串: 2
true
false
11
1
3
H

1.2 字符串高级操作

  1. 字符串的替换:
    result1 := strings.Replace(str1, “python”, “py”, n)
    参数n 代表替换几个 -1 表示所有的,如果是1 那就是替换一个 2代表替换两次,从左至右
// 把str1字符串中的python替换为py 替换所有的
result1 := strings.Replace(str1, "python", "py", -1)
  1. 按照指定的某个字符串进行切割 strings.Split(str1, “xx”)
result2 := strings.Split(str1, "py")
  1. 字符串的字母进行大小写转换
    小写 strings.ToLower(str1)
    大写:strings.ToUpper(str1)
  2. 左右空格去掉 strings.TrimSpace()
MyPrintln("5.字符串字母大小写转换")
str2 := "   新年好呀! 祝福您 万事如意   "
fmt.Println(str2)
fmt.Println(strings.TrimSpace(str2))
  1. 去掉左右两边的某个字符
strings.Trim("美国中国加油,中国加油美国", "美国")
  1. 去掉左边或者右边的某个字符串
fmt.Println(strings.TrimLeft("美国中国加油,中国加油美国", "美国"))
fmt.Println(strings.TrimRight("美国中国加油,中国加油美国", "美国"))
  1. 判断字符串是否以某个字符串开头
strings.HasPrefix("https://www.gdzs.com", "http")
  1. 判断字符串是否以某个字符串结尾
fmt.Println(strings.HasSuffix("https://www.gdzs.com", "com"))
  1. 总结

func Gstr(){MyPrintln("1.字符串高级操作")var str1 string = "javapythongoPythonjava你好python"// 1.字符串的替换 参数-1 代表替换几个 -1 表示所有的,如果是1 那就是替换一个result1 := strings.Replace(str1, "python", "py", -1)fmt.Println(result1)fmt.Println(strings.Replace(str1, "python", "py", 1))// 2.字符串分割; 返回一个字符串数组MyPrintln("2.字符串分割")result2 := strings.Split(str1, "py")fmt.Println(result2)for i, v :=  range result2 {fmt.Println(i, v)}// 4.字符串的字母进行大小写转换MyPrintln("4.字符串字母大小写转换")fmt.Println(strings.ToLower(str1))fmt.Println(strings.ToUpper(str1))// 5.左右空格去掉MyPrintln("5.字符串字母大小写转换")str2 := "   新年好呀! 祝福您 万事如意   "fmt.Println(str2)fmt.Println(strings.TrimSpace(str2))// 6.去掉左右两边的某个字符MyPrintln("6.去掉左右两边的某个字符")fmt.Println(strings.Trim("美国中国加油,中国加油美国", "美国"))// 7.去掉左边或者右边的某个字符串MyPrintln("7.去掉左边或者右边的某个字符串")fmt.Println(strings.TrimLeft("美国中国加油,中国加油美国", "美国"))fmt.Println(strings.TrimRight("美国中国加油,中国加油美国", "美国"))// 8.判断字符串是否以某个字符串开头MyPrintln("8.判断字符串是否以某个字符串开头")fmt.Println(strings.HasPrefix("https://www.gdzs.com", "http"))// 9.判断字符串是否以某个字符串结尾MyPrintln("8.判断字符串是否以某个字符串开头")fmt.Println(strings.HasSuffix("https://www.gdzs.com", "com"))
}

相关文章:

【GO语言卵细胞级别教程】06.GO语言的字符串操作

【GO语言卵细胞级别教程】06.GO语言的字符串操作 温馨提示&#xff1a; 本文中使用的项目模块均是 【05.项目创建和函数讲解】 中创建的&#xff0c;具体如何创建项目&#xff0c;请参考 【GO语言卵细胞级别教程】05.项目创建和函数讲解 目录&#xff1a; 【GO语言卵细胞级别…...

【笔记】【算法设计与分析 - 北航童咏昕教授】绪论

算法设计与分析 - 北航童咏昕教授 文章目录 算法的定义定义性质 算法的表示自然语言编程语言伪代码 算法的分析算法分析的原则渐近分析 算法的定义 定义 给定计算问题&#xff0c;算法是一系列良定义的计算步骤&#xff0c;逐一执行计算步骤即可得预期的输出。 性质 有穷性确…...

大语言模型LLM中Transformer模型的调用过程与步骤

在LLM&#xff08;Language Model&#xff09;中&#xff0c;Transformer是一种用来处理自然语言任务的模型架构。下面是Transformer模型中的调用过程和步骤的简要介绍&#xff1a; 数据预处理&#xff1a;将原始文本转换为模型可以理解的数字形式。这通常包括分词、编码和填充…...

mysql connect unblock with mysqladmin flush-hosts

原因 同一个ip在短时间内产生太多&#xff08;超过max_connect_errors的最大值&#xff09;中断的数据库连接而导致的阻塞。 查看 max_connect_errors show variables like max_connect_errors; 解决 前提&#xff1a;需要换一个IP地址连接 方法一 增大 max_connect_err…...

每日一练:前端js实现算法之两数之和

方法一&#xff1a;暴力法 function twoSum(nums, target) {for (let i 0; i < nums.length; i) {for (let j i 1; j < nums.length; j) {if (nums[i] nums[j] target) {return [i, j];}}}return null; }方法二&#xff1a;哈希表 function twoSum(nums, target) …...

17.隐式参数的定义和使用

目录 概述实践代码执行 结束 概述 实践 代码 package com.fun.scalaobject ImplicitParamsApp {def main(args: Array[String]): Unit {say("天下")implicit val word "spark"// 多个报错 // implicit val word2 "flink"implicit val con…...

简单介绍一下WebRTC中NACK机制

WebRTC中的NACK&#xff08;Negative Acknowledgement&#xff09;是一种用于实时通信的网络协议&#xff0c;用于在传输过程中检测和纠正丢包。当接收方检测到数据包丢失时&#xff0c;它会发送一个NACK消息给发送方&#xff0c;请求重新发送丢失的数据包。 NACK的工作原理如…...

05 Flink 的 WordCount

前言 本文对应于 spark 系列的 Spark 的 WordCount 这里主要是 从宏观上面来看一下 flink 这边的几个角色, 以及其调度的整个流程 一个宏观 大局上的任务的处理, 执行 基于 一个本地的 flink 集群 测试用例 /*** com.hx.test.Test01WordCount** author Jerry.X.He* ver…...

2024云服务器ECS_云主机_服务器托管_e实例-阿里云

阿里云服务器ECS英文全程Elastic Compute Service&#xff0c;云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;阿里云提供多种云服务器ECS实例规格&#xff0c;如ECS经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等&#xff0c;阿里云服务器网al…...

掌握这8大工具,自媒体ai写作之路畅通无阻! #经验分享#科技#媒体

这些宝藏AI 写作神器&#xff0c;我不允许你还不知道~国内外免费付费都有&#xff0c;还有AI写作小程序分享&#xff0c;大幅度提高写文章、写报告的效率&#xff0c;快来一起试试吧&#xff01; 1.元芳写作 这是一个微信公众号 面向专业写作领域的ai写作工具&#xff0c;写作…...

CTFHub技能树web之文件上传(一)

一.前置知识 文件上传漏洞&#xff1a;文件上传功能是许多Web应用程序的常见功能之一&#xff0c;但在实施不当的情况下&#xff0c;可能会导致安全漏洞。文件上传漏洞的出现可能会使攻击者能够上传恶意文件&#xff0c;执行远程代码&#xff0c;绕过访问控制等。 文件类型验证…...

蔚来面试解答

你的问题包含了多个方面&#xff0c;我会尽力逐一回答&#xff1a; 锁机制及锁膨胀过程&#xff1a; 锁机制是并发编程中用于控制多线程对共享资源访问的一种机制&#xff0c;以避免资源冲突导致的数据不一致问题。锁膨胀是指锁在运行时根据竞争情况可以升级的过程&#xff0c;…...

Springboot 中使用 Redisson+AOP+自定义注解 实现访问限流与黑名单拦截

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&…...

Java使用企业邮箱发送预警邮件

前言&#xff1a;最近接到一个需求&#xff0c;需要根据所监控设备的信息&#xff0c;在出现问题时发送企业微信进行预警。 POM依赖 <!-- 邮件 --> <dependency><groupId>com.sun.mail</groupId><artifactId>jakarta.mail</artifactId>…...

Unity编辑器扩展之是否勾选Text组件BestFit选项工具(此篇教程也可以操作其他组件的属性)

想要批量化是否勾选项目预制体资源中Text组件BestFit属性&#xff08;此篇教程也可以操作其他组件的属性&#xff0c;只不过需要修改其中对应的代码&#xff09;&#xff0c;可以采用以下步骤。 1、在项目的Editor文件中&#xff0c;新建一个名为TextBestFitBatchProcessor的…...

分布式场景怎么Join | 京东云技术团队

背景 最近在阅读查询优化器的论文&#xff0c;发现System R中对于Join操作的定义一般分为了两种&#xff0c;即嵌套循环、排序-合并联接。在原文中&#xff0c;更倾向使用排序-合并联接逻辑。 考虑到我的领域是在处理分库分表或者其他的分区模式&#xff0c;这让我开始不由得…...

24-k8s的附件组件-Metrics-server组件与hpa资源pod水平伸缩

一、概述 Metrics-Server组件目的&#xff1a;获取集群中pod、节点等负载信息&#xff1b; hpa资源目的&#xff1a;通过metrics-server获取的pod负载信息&#xff0c;自动伸缩创建pod&#xff1b; 参考链接&#xff1a; 资源指标管道 | Kubernetes https://github.com/kuberne…...

Spring RabbitMQ 配置多个虚拟主机(vhost)

文章目录 前言一、相关文章二、相关代码1.yml文件配置2.RabbitMq配置类3.接收MQ消息前言 在日常开发中,同时需要用到RabbitMQ多个虚拟机(vhost)。应用场景:需要接收多个交换机的数据,而交换机都在不同的虚拟机(vhost) 一、相关文章 Docker安装RabbitMQ 【SpringCloud…...

「Qt Widget中文示例指南」如何实现文档查看器?(一)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 文档查看器是一个显…...

如何创建WordPress付款表单(简单方法)

您是否正在寻找一种简单的方法来创建付款功能WordPress表单&#xff1f; 小企业主通常需要创建一种简单的方法来在其网站上接受付款&#xff0c;而无需设置复杂的购物车。简单的付款表格使您可以轻松接受自定义付款金额、设置定期付款并收集自定义详细信息。 在本文中&#x…...

虹科方案 | 释放总线潜力:汽车总线离线模拟解决方案

来源&#xff1a;虹科汽车智能互联 虹科方案 | 释放总线潜力&#xff1a;汽车总线离线模拟解决方案 原文链接&#xff1a;https://mp.weixin.qq.com/s/KGv2ZOuQMLIXlOiivvY6aQ 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #汽车总线 #ECU #汽车网关 导读 传统的…...

欲速则不达,慢就是快!

引言 随着生活水平的提高&#xff0c;不少人的目标从原先的解决温饱转变为追求内心充实&#xff0c;但由于现在的时间过得越来越快以及其他外部因素&#xff0c;我们对很多东西的获取越来越没耐心&#xff0c;例如书店经常会看到《7天精通Java》、《3天掌握XXX》等等之类的书籍…...

ubuntu22.04@Jetson OpenCV安装

ubuntu22.04Jetson OpenCV安装 1. 源由2. 分析3. 证实3.1 jtop安装3.2 jtop指令3.3 GPU支持情况 4. 安装OpenCV4.1 修改内容4.2 Python2环境【不需要】4.3 ubuntu22.04环境4.4 国内/本地环境问题4.5 cudnn版本问题 5. 总结6. 参考资料 1. 源由 昨天用Jetson跑demo程序发现帧率…...

OpenGL学习——17.模型

前情提要&#xff1a;本文代码源自Github上的学习文档“LearnOpenGL”&#xff0c;我仅在源码的基础上加上中文注释。本文章不以该学习文档做任何商业盈利活动&#xff0c;一切著作权归原作者所有&#xff0c;本文仅供学习交流&#xff0c;如有侵权&#xff0c;请联系我删除。L…...

6.2 数据库

本节介绍Android的数据库存储方式--SQLite的使用方法&#xff0c;包括&#xff1a;SQLite用到了哪些SQL语法&#xff0c;如何使用数据库管理操纵SQLitem&#xff0c;如何使用数据库帮助器简化数据库操作&#xff0c;以及如何利用SQLite改进登录页面的记住密码功能。 6.2.1 SQ…...

计算机设计大赛 深度学习人体跌倒检测 -yolo 机器视觉 opencv python

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习的人体跌倒检测算法研究与实现 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满…...

本地模拟发送、接收RabbitMQ数据

文章目录 前言一、相关文章二、相关代码1.模拟的 Channel 类2.接收消息3.模拟推送MQ数据前言 日常开发中,当线上RabbitMQ坏境还没准备好时,可在本地模拟发送、接收消息 一、相关文章 Docker安装RabbitMQ 【SpringCloud】整合RabbitMQ六大模式应用(入门到精通) Spring R…...

前端 webSocket 的使用

webSocket使用 注意要去监听websocket 对象事件&#xff0c;处理我们需要的数据 我是放在了最外层的index 内&#xff0c;监听编辑状态&#xff0c;去触发定义的方法。因为我这个项目是组件化开发&#xff0c;全部只有一个总编辑按钮&#xff0c;我只需监听是否触发了编辑即可…...

opencv图像处理(一)

一. OpenCV 简介 OpenCV 是一个跨平台计算机视觉库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。 应用领域 1、人机互动 2、物体识别 3、图像分割 4、人脸识别 5、动作识别 6、运动跟踪 7、机器人 8、运动分析 9、机器视觉 10、…...

消息队列-RabbitMQ:workQueues—工作队列、消息应答机制、RabbitMQ 持久化、不公平分发(能者多劳)

4、Work Queues Work Queues— 工作队列 (又称任务队列) 的主要思想是避免立即执行资源密集型任务&#xff0c;而不得不等待它完成。我们把任务封装为消息并将其发送到队列&#xff0c;在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时&#xff0c;这些工作…...