go - 如何在 Go 中将包含非数字字符的字符串拆分为字符串数组?
问题描述
如何将包含非数字字符的字符串拆分并过滤为仅包含数字字符的字符串数组?
例如,
str := "035a 444$ bb"
//split str into s
s := []string{"0", "3", "5", "4", "4", "4"}
解决方案
您在这里尝试做两件单独的事情,因此您需要首先在脑海中将它们分开:
首先,您尝试删除所有非数字字符。
其次,您试图将所有剩余字符拆分为包含单个字符的切片。
没有内置函数可以从字符串中删除非数字字符,但您可以编写正则表达式匹配和替换来执行此操作:
str := "035a 444$ bb"
reg, err := regexp.Compile("[^0-9]+")
if err != nil {
panic(err)
}
numericStr := reg.ReplaceAllString(str, "")
正则表达式匹配任何不包含在 0-9 中的字符。然后regexp.ReaplceAllString()
用任何内容替换这些字符。
这导致numericStr
包含字符串
"035444"
之后,您可以使用strings.Split()
来获取您想要的切片。
s := strings.Split(numericStr, "")
文档告诉我们:
如果 sep 为空,Split 在每个 UTF-8 序列之后拆分。
于是s
变成:
[]string{"0", "3", "5", "4", "4", "4"}
推荐阅读
- ssis - 需要使用执行进程任务捕获从 WinSCP 返回的退出代码
- fusionauth - 如何删除已撤销分配给他的同意的用户?
- sql-server - SQL Server 事务复制是否会保证订阅者中的插入顺序
- java - iText7 Image Transparency
- android - Recyler 视图没有遍历所有项目,它只显示一个项目
- kernel - I2C 驱动程序更改以识别多条总线
- angular - Ag-grid 在调整屏幕大小时防止水平滚动
- sql - 使用过滤器分组
- python - 基于字典值的 Matplotlib 条形图颜色
- javascript - 地理定位移动测试,无需 https 即可进行网络地理定位