Go语言实现截取指定长度字符串:高效且灵活的Substr函数
Go语言实现截取指定长度字符串:高效且灵活的Substr函数
本文将介绍Go语言实现的Substr函数,用于截取指定长度的字符串,支持正向和反向截取。该函数高效且灵活,并提供了使用示例,方便读者理解和应用。
func Substr(str string, start, length int) string {
rs := []rune(str)
lenrs := len(rs)
end := 0
if start < 0 {
start = lenrs + start
}
end = start + length
if start > end {
start, end = end, start
}
if end > lenrs {
end = lenrs
}
if start > lenrs {
start = lenrs
}
return string(rs[start:end])
}
// 使用示例
str := 'Hello, 世界!'
substr := Substr(str, 0, 5) // 截取前5个字符
fmt.Println(substr) // 输出:Hello
substr = Substr(str, 7, 2) // 截取第8个字符和第9个字符
fmt.Println(substr) // 输出:世界
substr = Substr(str, -2, 2) // 截取倒数第2个字符和倒数第1个字符
fmt.Println(substr) // 输出:!
函数解析:
Substr(str string, start, length int) string:该函数接受三个参数:str:要截取的字符串。start:截取起始位置,支持负数(表示从字符串末尾开始计算)。length:截取长度。
rs := []rune(str):将字符串转换为rune切片,以便正确处理中文等多字节字符。lenrs := len(rs):获取rune切片的长度。end := 0:初始化截取结束位置。if start < 0 {...}:如果起始位置为负数,则将其转换为从字符串末尾开始计算的正数位置。end = start + length:计算截取结束位置。if start > end {...}:如果起始位置大于结束位置,则交换它们,以确保截取范围合法。if end > lenrs {...}和if start > lenrs {...}:确保截取范围不超过字符串长度。return string(rs[start:end]):返回截取后的字符串。
使用示例:
substr := Substr(str, 0, 5):截取前5个字符,输出'Hello'。substr = Substr(str, 7, 2):截取第8个字符和第9个字符,输出'世界'。substr = Substr(str, -2, 2):截取倒数第2个字符和倒数第1个字符,输出'!'。
总结:
该Substr函数通过使用rune切片和灵活的边界处理,可以高效地截取指定长度的字符串,并且支持正向和反向截取。该函数在各种字符串处理场景中都非常实用。
原文地址: https://www.cveoy.top/t/topic/nPXm 著作权归作者所有。请勿转载和采集!