首页 > 其他分享 >go strings包

go strings包

时间:2025-01-05 23:12:03浏览次数:1  
标签:Println string fmt 字符串 func go strings

字符串的遍历

package main

import (
	"fmt"
	"unicode/utf8"
)

func main() {
	s := "天气好干燥啊A"
	fmt.Println("字节长度", len(s))
	fmt.Println("================")
	// for  range 遍历字符串
	len := 0
	for i, ch := range s {
		fmt.Printf("%d:%c ", i, ch)
		len++
	}
	// 遍历所有字节
	for i, ch := range []byte(s) {
		fmt.Printf("%d:%x ", i, ch)
	}
	fmt.Println()
	fmt.Println("================")
	// 遍历所有字符
	count := 0
	for i, ch := range []rune(s) {
		fmt.Printf("%d:%c ", i, ch)
		count++
	}
	fmt.Println()
	fmt.Println("字符串长度", len)
	fmt.Println("字符长度", count)
	fmt.Println("字符长度", utf8.RuneCountInString(s))
}



结果
字节长度 19
================
0:天 3:气 6:好 9:干 12:燥 15:啊 18:A 0:e5 1:a4 2:a9 3:e6 4:b0 5:94 6:e5 7:a5 8:bd 9:e5 10:b9 11:b2 12:e7 13:87 14:a5 15:e5 16:95 17:8a 18:41 
================
0:天 1:气 2:好 3:干 4:燥 5:啊 6:A 
字符串长度 7
字符长度 7
字符长度 7

遍历字符推荐使用rune,因为一个byte存不下一个汉字的unicode值。

字符串处理函数

检索字符串

方法 功能描述
func Contains(s, substr string) bool 判断字符串 s 是否包含 substr 字符串
func ContainsAny(s, chars string) bool 判断字符串 s 是否包含 chars 字符串中的任一字符
func ContainsRune(s string, r rune) bool 判断字符串 s 是否包含 unicode 码值 r
func Count(s, sep string) int 返回字符串 s 包含字符串 sep 的个数
func HasPrefix(s, prefix string) bool 判断字符串 s 是否有前缀字符串 prefix
func HasSuffix(s, suffix string) bool 判断字符串 s 是否有后缀字符串 suffix
func Index(s, sep string) int 返回字符串 s 中字符串 sep 首次出现的位置
func IndexAny(s, chars string) int 返回字符串 chars 中的任意一个 unicode 码值在 s 中首次出现的位置
func IndexByte(s string, c byte) int 返回字符串 s 中字符 c 首次出现的位置
func IndexFunc(s string, f func(rune) bool) int 返回字符串 s 中满足函数 f (r)=true 字符首次出现的位置
func IndexRune(s string, r rune) int 返回 unicode 码值 r 在字符串中首次出现的位置
func LastIndex(s, sep string) int 返回字符串 s 中字符串 sep 最后一次出现的位置
func LastIndexAny(s, chars string) int 返回字符串 chars 中的任意一个 unicode 码值在 s 中最后一次出现的位置
func LastIndexByte(s string, c byte) int 返回字符串 s 中字符 c 最后一次出现的位置
func LastIndexFunc(s string, f func(rune) bool) int 返回字符串 s 中满足函数 f (r)=true 字符最后一次出现的位置
package main

import (
	"fmt"
	"strings"
)

func main() {
	TestContains()

}
func TestContains() {
	fmt.Println(strings.Contains("hello", "i"))
	fmt.Println(strings.Contains("hello", "o"))
	fmt.Println(strings.Contains("hello", "o & e"))
	fmt.Println(strings.Contains("hello", ""))
	fmt.Println(strings.Contains("", ""))
}
package main

import (
    "fmt"
    "strings"
)

func main() {
    TestContainsAny()

}

func TestContainsAny() {
    fmt.Println(strings.ContainsAny("hello", "i"))
    fmt.Println(strings.ContainsAny("hello", "o"))
    fmt.Println(strings.ContainsAny("hello", "o & e"))
    fmt.Println(strings.ContainsAny("hello", ""))
    fmt.Println(strings.ContainsAny("", ""))
}
package main

import (
    "fmt"
    "strings"
)

func main() {
    TestContainsRune()

}

func TestContainsRune() {
    fmt.Println(strings.ContainsRune("一丁", '丁'))
    fmt.Println(strings.ContainsRune("一丁", 19969))
}
package main

import (
	"fmt"
	"strings"
)

func main() {
	TestCount()

}

func TestCount() {
	fmt.Println(strings.Count("一丁", "丁"))
	fmt.Println(strings.Count("一丁", "000"))
	fmt.Println(strings.Count("one", "")) // 结果是4
	fmt.Println(strings.Count("one", "e"))
}

package main

import (
	"fmt"
	"strings"
)

func main() {
	TestHasPrefix()

}

func TestHasPrefix() {
	fmt.Println(strings.HasPrefix("100000 phone news", "1000"))
	fmt.Println(strings.HasPrefix("100000 phone news", "1000a"))
}
package main

import (
	"fmt"
	"strings"
)

func main() {
	TestHasSuffix()

}

func TestHasSuffix() {
	fmt.Println(strings.HasSuffix("100000 phone news", "news"))
	fmt.Println(strings.HasSuffix("100000 phone news", "SSS0a"))
}

package main

import (
	"fmt"
	"strings"
)

func main() {
	TestIndex()

}

func TestIndex() {
	fmt.Println(strings.Index("chicken", "ken"))
	fmt.Println(strings.Index("chicken", "dne"))
}
// 没有则返回-1
// 返回字符串中满足函数f(c)==true字符最后一次出现的位置
package main

import (
    "fmt"
    "strings"
    "unicode"
)

func main() {
    TestLastIndexFunc()
}

func TestLastIndexFunc() {
    f := func(c rune) bool {
       return unicode.Is(unicode.Han, c)
    }
    fmt.Println(strings.LastIndexFunc("hello,世界", f))
    fmt.Println(strings.LastIndexFunc("hello,四季青", f))
}

分割字符串

方法 功能描述
func Fields(s string) []string 将字符串 s 以空白字符分割,返回一个切片
func FieldsFunc(s string, f func(rune) bool) []string 将字符串 s 以满足 f (r)==true 的字符分割,返回一个切片
func Split(s, sep string) []string 将字符串 s 以 sep 作为分隔符进行分割,分割后字符最后去掉 sep
func SplitAfter(s, sep string) []string 将字符串 s 以 sep 作为分隔符进行分割,分割后字符最后附上 sep
func SplitAfterN(s, sep string, n int) []string 将字符串 s 以 sep 作为分隔符进行分割,分割后字符最后附上 sep,n 决定返回的切片数
func SplitN(s, sep string, n int) []string 将字符串 s 以 sep 作为分隔符进行分割,分割后字符最后去掉 sep,n 决定返回的切片数
package main

import (
	"fmt"
	"strings"
)

func main() {
	TestFields()
}

func TestFields() {
	fmt.Println(strings.Fields(" abc 123 "))
}

大小写转换

方法 功能描述
func Title(s string) string 将字符串 s 每个单词首字母大写返回
func ToLower(s string) string 将字符串 s 转换成小写返回
func ToLowerSpecial(_case unicode.SpecialCase, s string) string 将字符串 s 中所有字符按_case 指定的映射转换成小写返回
func ToTitle(s string) string 将字符串 s 转换成大写返回
func ToTitleSpecial(_case unicode.SpecialCase, s string) string 将字符串 s 中所有字符按_case 指定的映射转换成大写返回
func ToUpper(s string) string 将字符串 s 转换成大写返回
func ToUpperSpecial(_case unicode.SpecialCase, s string) string 将字符串 s 中所有字符按_case 指定的映射转换成大写返回

修剪字符串

方法 功能描述
func Trim(s string, cutset string) string 将字符串 s 首尾包含在 cutset 中的任一字符去掉返回
func TrimFunc(s string, f func(rune) bool) string 将字符串 s 首尾满足函数 f (r)==true 的字符去掉返回
func TrimLeft(s string, cutset string) string 将字符串 s 左边包含在 cutset 中的任一字符去掉返回
func TrimLeftFunc(s string, f func(rune) bool) string 将字符串 s 左边满足函数 f (r)==true 的字符去掉返回
func TrimPrefix(s, prefix string) string 将字符串 s 中前缀字符串 prefix 去掉返回
func TrimRight(s string, cutset string) string 将字符串 s 右边包含在 cutset 中的任一字符去掉返回
func TrimRightFunc(s string, f func(rune) bool) string 将字符串 s 右边满足函数 f (r)==true 的字符去掉返回
func TrimSpace(s string) string 将字符串 s 首尾空白去掉返回
func TrimSuffix(s, suffix string) string 将字符串 s 中后缀字符串 suffix 去掉返回

比较字符串

方法 功能描述
func Compare(a, b string) int 按字典顺序比较 a 和 b 字符串大小
func EqualFold(s, t string) bool 判断 s 和 t 两个 UTF - 8 字符串是否相等,忽略大小写
func Repeat(s string, count int) string 将字符串 s 重复 count 次返回
func Replace(s, old, new string, n int) string 替换字符串 s 中 old 字符为 new 字符并返回,n<0 时替换所有 old 字符串
func Join(a []string, sep string) string 将 a 中的所有字符连接成一个字符串,使用字符串 sep 作为分隔符

标签:Println,string,fmt,字符串,func,go,strings
From: https://www.cnblogs.com/larhuan/p/18654124

相关文章

  • django学习笔记--drf认证、权限、限流记录
    drf基础配置版本:Django3.2djangorestframework3.13.1纯净版配置:INSTALLED_APPS=[#'django.contrib.admin',#'django.contrib.auth',#'django.contrib.contenttypes',#'django.contrib.sessions......
  • 中考英语优秀范文-009 A Good Habit, a Successful School Life 良好习惯,成功学校生活
    1写作要求养成良好的生活习惯和学习习惯,对于我们每一位学生成长很有帮助。请根据提示要点用英语写一篇词数90左右的短文,发表在学校网站上。提示要点:良好的生活和学习习惯包括1)在生活方面:①健康饮食②经常锻炼③利用好时间2)在学习方面:①课前预习②认真听讲③独立作业良......
  • 软件缺少netlogon.dll文件及错误提示问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • Java基于springboot+vue的宠物领养寄养救助系统pythgon+nodejs+php-计算机毕业设计
    目录功能和技术介绍具体实现截图开发核心技术:开发环境开发步骤编译运行核心代码部分展示系统设计详细视频演示可行性论证软件测试源码获取功能和技术介绍该系统基于浏览器的方式进行访问,采用springboot集成快速开发框架,前端使用vue方式,基于es5的语法,开发工具Intelli......
  • GoLang 2024 安装激活详细使用教程(激活至2026,实测是永久,亲测!)
    开发工具推荐:GoLang安装激活详细使用教程(激活至2026,实际上永久,亲测!)申明:本教程GoLang补丁、激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版!GoLang是JetBrains公司推出的一款功能强大的GO语言集成开发环境(IDE),凭借其丰富的......
  • (赠源码)基于python+Django+msyql协同过滤的音乐推荐系统的设计与实现74526-计算机原创
    摘要随着音乐产业的数字化和个性化需求不断增长,音乐推荐系统作为提升用户体验和促进音乐产业发展的重要工具备受关注。本研究旨在基于协同过滤算法,结合Python编程语言和Django框架,构建一款高效的音乐推荐系统。通过分析用户的历史播放记录、喜好和行为数据,系统能够实现个性......
  • 《Python基于django医用耗材网上申领系统》毕业设计项目
    大家好我是小村学长,混迹在java圈的辛苦码农。今天要和大家聊的是一款《Python基于django医用耗材网上申领系统》毕业设计项目。项目源码以及部署相关请联系小村学长,文末附上联系信息。......
  • 优化网站视觉效果,掌握织梦系统Logo修改方法
    修改织梦(DedeCMS)系统的网站Logo可以提升品牌形象和用户体验。以下是具体操作步骤:步骤描述准备Logo图片确保Logo图片的尺寸和格式符合网站的要求。通常建议使用PNG或SVG格式,以确保透明背景和高质量显示。登录后台管理使用管理员账号登录到织梦后台管理系统。进入......
  • 每天40分玩转Django:Django插件开发
    Django插件开发一、插件开发概述表阶段主要任务技术要点难度准备工作项目结构设计、环境配置项目布局、setup.py★★★☆☆开发实现功能开发、测试编写DjangoAppConfig、Signals★★★★☆文档编写API文档、使用说明Markdown、reStructuredText★★★☆☆发布部署PyPI打......
  • Python+Django+Mysql开发个性化旅游酒店推荐系统 python在线酒店推荐系统设计开发 可
    Python+Django+Mysql开发个性化旅游酒店推荐系统python在线酒店推荐系统设计开发可视化、爬虫协同过滤推荐算法机器学习深度学习人工智能大数据开发教程文档HotelRecommendSysPy一、项目简介1、开发工具和使用技术Python3及以上版本,Django3.6及以上版本,mysql8,nav......