GO字符串练习题实例代码
提取身份证号关键信息
题目描述
在身份信息处理中,需要从身份证号"110101199001011234"中提取生日年份和最后 4 位数字,用切片综合操作得到 "19901234"。
输出示例
19901234
实现代码
package main
import "fmt"
func main() {
s := "110101199001011234"
fmt.Print(s[6:10], s[14:18])
}提取核心品质词汇
题目描述
从语句"忠诚铸魂,勤奋立业,创新强国,奉献为民"中,按指定索引提取字符,组合成 "忠诚勤奋创新奉献"。
输出示例
忠诚勤奋创新奉献
实现代码
package main
import "fmt"
func main() {
s := "忠诚铸魂,勤奋立业,创新强国,奉献为民"
s1 := []rune(s)
fmt.Print(string(s1[0:2]), string(s1[5:7]), string(s1[10:12]), string(s1[15:17]))
}订单编号生成
题目描述
电商系统生成订单编号时,需要拼接固定前缀、日期和随机数,分别用三种方式实现。
- 定义变量:
prefix = "ORD"(前缀)、date = "20260310"(日期)、randomNum = 8899(随机数)- 用加号方式拼接成格式:"ORD-20260310-8899"
- 用
fmt.Sprintf拼接相同格式的订单编号- 用
strings.Builder逐段拼接相同格式的订单编号
输出示例
+生成订单号:ORD-20260310-8899
Sprintf生成订单号:ORD-20260310-8899
Builder生成订单号:ORD-20260310-8899
实现代码
package main
import (
"fmt"
"strings"
)
func main() {
// 定义订单编号组成部分
prefix := "ORD"
date := "20260310"
randomNum := 8899
// 1. 加号方式拼接
fmt.Println(prefix + "-" + date + "-" + strconv.Itoa(randomNum))
// 2. Sprintf方式拼接订单号
orderIdSprintf := fmt.Sprintf("%s-%s-%d", prefix, date, randomNum)
fmt.Printf("Sprintf生成订单号:%s\n", orderIdSprintf)
// 3. Builder方式逐段拼接
var builder strings.Builder
builder.WriteString(prefix)
builder.WriteString("-")
builder.WriteString(date)
builder.WriteString("-")
builder.WriteString(fmt.Sprintf("%d", randomNum))
orderIdBuilder := builder.String()
fmt.Printf("Builder生成订单号:%s\n", orderIdBuilder)
}拼接日志
题目描述
日志系统需要拼接多条固定日志内容,strings.Builder在多次拼接时比Sprintf更高效,演示多段短字符串的拼接场景。
- 定义 4 个日志片段:
logPart1 = "【INFO】"、logPart2 = "服务启动:"、logPart3 = "api-server"、logPart4 = "端口:8080"- 用
fmt.Sprintf拼接成完整日志:"【INFO】服务启动:api-server 端口:8080"- 用
strings.Builder依次拼接 4 个片段(中间加空格)- 输出两种方式的完整日志
输出示例
Sprintf拼接日志:【INFO】服务启动:api-server 端口:8080
Builder拼接日志:【INFO】服务启动:api-server 端口:8080
实现代码
package main
import (
"fmt"
"strings"
)
func main() {
// 定义日志片段
logPart1 := "【INFO】"
logPart2 := "服务启动:"
logPart3 := "api-server"
logPart4 := "端口:8080"
// 1. Sprintf方式拼接长文本
logSprintf := fmt.Sprintf("%s%s%s %s", logPart1, logPart2, logPart3, logPart4)
fmt.Printf("Sprintf拼接日志:%s\n", logSprintf)
// 2. Builder方式逐段拼接
var builder strings.Builder
builder.WriteString(logPart1)
builder.WriteString(logPart2)
builder.WriteString(logPart3)
builder.WriteString(" ")
builder.WriteString(logPart4)
logBuilder := builder.String()
fmt.Printf("Builder拼接日志:%s\n", logBuilder)
}分割与拼接操作
题目描述
- 定义
tags = "基础,进阶,实战"- 用
strings.Split按逗号分割,strings.Join用竖线拼接- 输出拼接结果
输出示例
拼接后标签:基础|进阶|实战
实现代码
package main
import (
"fmt"
"strings"
)
func main() {
tags := "基础,进阶,实战"
// 分割
tagSlice := strings.Split(tags, ",")
// 拼接
joinTags := strings.Join(tagSlice, "|")
fmt.Printf("拼接后标签:%s\n", joinTags)
}包含判断与子串替换
题目描述
- 定义
text = "学习Go,用好Go"- 用
strings.Contains判断是否含 "Go",strings.Replace替换所有 "Go" 为 "Go 语言"- 输出判断结果和替换后文本
输出示例
包含"Go":true
替换后:学习Go语言,用好Go语言
实现代码
package main
import (
"fmt"
"strings"
)
func main() {
text := "学习Go,用好Go"
// 判断包含
hasGo := strings.Contains(text, "Go")
// 替换所有(n=-1)
replaceText := strings.Replace(text, "Go", "Go语言", -1)
fmt.Printf("包含\"Go\":%t\n", hasGo)
fmt.Printf("替换后:%s\n", replaceText)
}总结
到此这篇关于GO字符串练习题的文章就介绍到这了,更多相关GO字符串练习题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
golang使用sync.singleflight解决热点缓存穿透问题
在go的sync包中,有一个singleflight包,里面有一个 singleflight.go文件,代码加注释,一共200行出头,通过 singleflight可以很容易实现缓存和去重的效果,避免重复计算,接下来我们就给大家详细介绍一下sync.singleflight如何解决热点缓存穿透问题2023-07-07


最新评论