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

Go 字符串处理

一、 字符串处理函数

我们从文件中将数据读取出来以后,很多情况下并不是直接将数据打印出来,而是要做相应的处理。例如:去掉空格等一些特殊的符号,对一些内容进行替换等。

这里就涉及到对一些字符串的处理。在对字符串进行处理时,需要借助于包“strings”

下面讲解一下常用的字符串处理函数:

1. Contains

func Contains(s, substr string) bool

功能:字符串s中是否包含substr,返回bool值。演示如下:

//查找一个字符串在另一个字符串中是否出现
str1 := "hello world"
str2 := "g"//Contains(被查找的字符串,查找的字符串)  返回值 bool
//一般用于模糊查找
b := strings.Contains(str1,str2)
//fmt.Println(b)
if b {fmt.Println("找到了")
}else {fmt.Println("没有找到")
}

在使用Contains关键字的时候,判断b的结果,如果在str1中有str2的字那么就返回true,在判断的时候不写true默认就是等于true。

2. Join

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

功能:字符串链接,把slice通过sep链接起来

演示如下:

//字符串切片
slice := []string{"123","456","789"}
//fmt.Println(slice)
//Join
//字符串的连接
str := strings.Join(slice,"")
fmt.Println(str)
//fmt.Printf("%T\n",str)

结果如下:

123456789

通过join关键字把,slice里面的值通过strings.Join(slice,“”)也就是去除""给从新赋值给了str最后打印出来的值就变成了123456789。

3. Index

func Index(s, substr string) int

功能:在字符串s中查找sep所在的位置,返回位置值,找不到返回-1

str1 := "hello world"
str2 := "e"
//查找一个字符串在另一个字符串中第一次出现的位置 返回值 int 下标 -1 找不到i := strings.Index(str1,str2)
fmt.Println(i)

结果为1。
i := strings.Index(str1,str2)通过index关键字,在str1中查找str2的值,然后赋值给i,e这个值在hello woeld中能找到所以就会返回它的下标值,下标值是从0开始的,h是0,e就是1,所以结果为1。如果查找的是一个g的话找不到就会返回一个-1。

4. Repeat

func Repeat(s string, count int) string

功能:重复s字符串count次,最后返回重复的字符串。

演示如下:

str := "性感网友,在线取名。"
//将一个字符串重复n次
str1 := strings.Repeat(str,100)
fmt.Println(str1)

str1 := strings.Repeat(str,100)通过repeat关键字重复了str100遍,就和循环遍历str100次是一样的。

5. Replace

func Replace(s, old, new string, n int) string

功能:在s字符串中,把old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换

str := "性感网友在线取名性感性感性感性感性感"
//字符串替换 屏蔽敏感词汇
//如果替换次数小于0 表示全部替换
str1 := strings.Replace(str,"性感","**",-1)
fmt.Println(str1)

结果如下:

**网友在线取名**********

str1 := strings.Replace(str,“性感”,"",-1)通过关键字replace把str中的性感替换为了****然后给了个-1也就是全部替换,当然你给其他的负数也是一样的,只要是小于0就全部替换,如果说是1的话就是替换一次,输出结果就会是:**网友在线取名性感性感性感性感性感。

6. Split

func Split(s, sep string) []string

功能:把s字符串按照sep分割,返回slice。

//将一个字符串按照标志位进行切割变成切片
str1 := "123456789@qq.com"
slice := strings.Split(str1,"@")
fmt.Println(slice[0])

结果如下:

123456789

slice := strings.Split(str1,“@”)通过split关键字对str1进行了分割,把@后面的给丢弃了,留下了@前面的。

7. Trim

func Trim(s string, cutset string) string

功能:在s字符串的头部和尾部去除cutset指定的字符串。

str := "====a===u=ok===="
//去掉字符串头尾的内容
str1:= strings.Trim(str,"=")
fmt.Println(str1)

结果如下:

a===u=ok

str1:= strings.Trim(str,“=”)通过Trim关键字对str中的=号做了去除头尾的处理,只要是str前面有=,或者后面有=都会去除。

8. Fields

func Fields(s string) []string

功能:去除s字符串的空格符,并且按照空格分割返回slice。

str := " are you ok "
//去除字符串中空格 转成切片 一般用于统计单词个数
slice := strings.Fields(str)
fmt.Println(slice)

slice := strings.Fields(str)通过Fields关键字对str中的值进行了空格去除。

二、字符串转换

通过以上的讲解,发现字符串的处理是非常重要的,GO语言也提供了字符串与其它类型之间相互转换的函数。相应的字符串转换函数都在“strconv”包。

1. Format系列函数:
Format系列函数把其他类型的转换为字符串。

//将其他类型转成字符串 Format
b := false
fmt.Printf("%T\n", b)
str := strconv.FormatBool(b)
fmt.Println(str)
fmt.Printf("%T\n", str)// 结果
bool
false 
stringstr := strconv.FormatInt(120, 10) //计算机中进制 可以表示2-36 2 8 10 16
fmt.Printf("%T\n", str)
fmt.Println(str)
// 'f'打印方式 以小数方式 4 指小数位数 64 以float64处理
str1 := strconv.FormatFloat(3.14159, 'f', 4, 64)
fmt.Printf("%T\n", str1)
fmt.Println(str1)str2 := strconv.Itoa(123)
fmt.Printf("%T\n", str2)
fmt.Println(str2)string
120   
string
3.1416
string
123  

以上代码只要是通过Format关键字就能全部转换为字符串类型输出。

2. Parse
Parse系列函数把字符串转换为其他类型:

//字符串转成其他类型 Parse
b, err := strconv.ParseBool("true")
fmt.Println(b, err)
if err != nil {fmt.Println("类型转换出错")
} else {fmt.Println(b)fmt.Printf("%T\n", b)
}true <nil>
true
bool

3. Append
Append系列函数将整数等转换为字符串后,添加到现有的字节数组中。

slice := make([]byte,0,1024)
//将其他类型转成字符串 添加到字符切片里slice = strconv.AppendBool(slice,false)// 2进制方式
slice = strconv.AppendInt(slice,123,2)//'f'以小数的方式  保留4位  float64
slice = strconv.AppendFloat(slice,3.14159,'f',4,64)
slice = strconv.AppendQuote(slice,"hello")
fmt.Println(string(slice))

对应的结果是:

false11110113.1416"hello"

相关文章:

Go 字符串处理

一、 字符串处理函数 我们从文件中将数据读取出来以后&#xff0c;很多情况下并不是直接将数据打印出来&#xff0c;而是要做相应的处理。例如&#xff1a;去掉空格等一些特殊的符号&#xff0c;对一些内容进行替换等。 这里就涉及到对一些字符串的处理。在对字符串进行处理时…...

家政服务接单小程序开发源码 家政保洁上门服务小程序源码 开源完整版

分享一个家政服务接单小程序开发源码&#xff0c;家政保洁上门服务小程序源码&#xff0c;一整套完整源码开源&#xff0c;可二开&#xff0c;含完整的前端后端和详细的安装部署教程&#xff0c;让你轻松搭建家政类的小程序。家政服务接单小程序开发源码为家政服务行业带来了诸…...

SuperMap iClient3D 11i (2023) SP1 for Cesium之移动实体对象

作者&#xff1a;nannan 目录 前言 一、代码思路 1.1 绘制面实体对象 1.2 鼠标左键按下事件 1.3 鼠标移动事件 1.4 鼠标左键抬起事件 二、运行效果 三、注意事项 前言 SuperMap 官网三维前端范例 编辑线面&#xff0c;可以对面实体对象的节点进行增加、删除以及修改位置…...

【深度学习 AIGC】stablediffusion-infinity 在无界限画布中输出绘画 Outpainting

代码&#xff1a;https://github.com/lkwq007/stablediffusion-infinity/tree/master 启动环境&#xff1a; git clone --recurse-submodules https://github.com/lkwq007/stablediffusion-infinity cd stablediffusion-infinity conda env create -f environment.yml conda …...

Flutter插件之阿里百川

上一篇&#xff1a;Flutter插件的制作和发布&#xff0c;我们已经了解了如何制作一个通用的双端插件&#xff0c;本篇就带领大家将阿里百川双端sdk制作成一个flutter插件供项目调用&#xff01; 目录 登录并打开控制台&#xff0c;创建应用&#xff1a;填写应用相关信息开通百川…...

✔ ★ 算法基础笔记(Acwing)(三)—— 搜索与图论(17道题)【java版本】

搜索与图论 1. DFS1. 排列数字(3分钟)2. n-皇后问题 2. BFS&#xff08;队列&#xff09;1. 走迷宫二刷总结&#xff08;队列存储一个节点pair<int,int>&#xff09;三刷总结 走过的点标记上距离(既可以记录距离&#xff0c;也可以判断是否走过) ★ ★ 例题2. 八数码二刷…...

初试占比70%,计算机招生近200人,安徽理工大学考情分析

安徽理工大学 考研难度&#xff08;☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分析&#xff09;、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文980字&#xff0c;预计阅读&#xff1a;3分钟 2023考情概况 安徽理工大…...

LeetCode题解:1720. 解码异或后的数组,异或,JavaScript,详细注释

原题链接&#xff1a; https://leetcode.cn/problems/decode-xored-array/ 解题思路&#xff1a; 异或有如下性质&#xff1a; a ^ a 0a ^ 0 aa ^ b b ^ a 根据题意&#xff0c;已知encoded[i - 1] arr[i - 1] ^ arr[i]&#xff0c;可以做如下转换&#xff1a; encoded[i…...

【C刷题】day2

一、选择题 1、以下程序段的输出结果是&#xff08; &#xff09; #include<stdio.h> int main() { char s[] "\\123456\123456\t"; printf("%d\n", strlen(s)); return 0; } A: 12 B: 13 C: 16 D: 以上都不对【答案】&#xff1a; A 【解析】…...

Apollo源码安装的问题及解决方法

问题一 在进行git clone时&#xff0c;会报错Failed to connect to github.com port 443: Timed out&#xff0c;经过实践后推荐以下两种方法。 方法一&#xff1a;在原地址前加https://ghproxy.com 原地址&#xff1a;git clone https://github.com/ApolloAuto/apollo.git …...

Flutter 挖孔屏的状态栏占用问题怎么解决,横屏后去掉了状态栏,还是会有一块黑色的竖条

使用下方代码后依旧有一条黑色的区域 overridevoid initState() {// TODO: implement initStatesuper.initState();///关闭状态栏&#xff0c;与底部虚拟操作按钮SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);//隐藏状态栏&#xff0c;底部按钮栏S…...

Layui快速入门之第九节 表格事件的使用

目录 一&#xff1a;事件 二&#xff1a;头部工具栏事件 三&#xff1a;排序切换事件 四&#xff1a;列拖拽宽度后的事件 五&#xff1a;列筛选&#xff08;显示或隐藏&#xff09;后的事件 六&#xff1a;行单击和双击事件 七&#xff1a;行右键菜单事件 八&#xff1a;…...

[2023.09.14]: Rust的条件编译

关于条件编译&#xff0c;我的记忆是10多年前&#xff0c;写C#的时代了&#xff0c;最近10年写Python和Javascript代码&#xff0c;虽然Javascript中也可以通过插件实现条件编译的效果&#xff0c;但是用起来太憋足了。当我在Yew的SSR开发模式中看到条件编译的配置时&#xff0…...

数据清洗:数据挖掘的前期准备工作

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…...

基于FPGA的图像sobel锐化实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 将FPGA的仿真结果导入到matlab显示图像效果 2.算法运行软件版本 MATLAB2022a,vivado2019.2 3.部分核心程序 .................................…...

HDMI 直通 ILA 调试实验

FPGA教程学习 第十四章 HDMI 直通 ILA 调试实验 文章目录 FPGA教程学习前言实验原理程序设计实验过程实验尝试总结TODO 前言 HDMI 输入直通到 HDMI 输出的显示&#xff0c;完成一个简单的 HDMI 输入输出检测。 实验原理 开发板 HDMI 输出接口芯片使用 ADV7511&#xff0c;HD…...

基于Qt4开发曲线绘制交互软件Plotter

目前市面上有很多曲线绘制软件,但其交互功能较差。比如,想要实现数据的交互,同步联动等,都需要大量繁琐的人工操作。所以讲想开发一款轻量级的曲线绘制交互软件。下面就以此为案例,记录一下基于Qt4的开发过程。 目录 1 需求 2 技术路线 3 开发流程 1 框架搭建 2 菜单…...

数据分享|R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病...

全文链接&#xff1a;http://tecdat.cn/?p23061 这个数据集&#xff08;查看文末了解数据免费获取方式&#xff09;可以追溯到1988年&#xff0c;由四个数据库组成。克利夫兰、匈牙利、瑞士和长滩。"目标 "字段是指病人是否有心脏病。它的数值为整数&#xff0c;0无…...

【深度学习】 Python 和 NumPy 系列教程(十五):Matplotlib详解:2、3d绘图类型(1):线框图(Wireframe Plot)

目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 0. 设置中文字体 1. 线框图&#xff08;Wireframe Plot&#xff09; 一、前言 Python是一种高级编程语言&#xff0c;由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名&#xff0…...

阿里云CDN缓存配置及优化-oss绑定CDN缓存自动刷新功能

参考阿里云官网文档&#xff1a;https://help.aliyun.com/practice_detail/603170 1.缓存时间配置 在缓存管理中&#xff0c;可以方便地指定目录和文件后缀名在CDN节点上的缓存时间&#xff0c;缓存时长配置的长短&#xff0c;取决于源站对该文件的变更频率。我们需要分析下业务…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...