Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > GO字符串练习题

GO字符串练习题实例代码

作者:呆萌很

字符串在Go语言中是一个不可变的字节序列,通常用来表示文本,这篇文章主要介绍了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字符串练习题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文