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