3
我想用零替换一个字符串中的所有数字,理想情况下连续数字应该用一个零替换。
abc826def47
应该成为abc0def0
在golang中用零替换数字
我已经尝试了两种方法:
使用正则表达式:使用strings.Replace
import s "strings"
func normalizeNumbers(str string) string{
str = s.Replace(str, "1", "0", -1)
str = s.Replace(str, "2", "0", -1)
str = s.Replace(str, "3", "0", -1)
str = s.Replace(str, "4", "0", -1)
str = s.Replace(str, "5", "0", -1)
str = s.Replace(str, "6", "0", -1)
str = s.Replace(str, "7", "0", -1)
str = s.Replace(str, "8", "0", -1)
str = s.Replace(str, "9", "0", -1)
str = s.Replace(str, "00", "0", -1)
return str
}
第二种方法
var numbersRegExp = regexp.MustCompile("[0-9]+")
func normalizeNumbers(str string) string{
return numbersRegExp.ReplaceAllString(str, "0")
}
不使用正则表达式似乎要快一点,但还是很sl当处理大约100k字符串时,它并不能很好地取代连续的数字。
有没有更好的方法来做到这一点?
谢谢,使用这种方法,性能提高了约50%。我会等待看看是否有其他答案。 – paradite
我如何检测输入中是否有数字而没有遍历整个字符串? – paradite
@paradite你不能,所以它有点开销。但是如果你这样做并且发现没有数字被包含,你可以立即返回输入字符串而不做任何其他的事情。 – icza