我需要刪除除「|」之外的所有字符和一個字符串中的空格。我不明白在Go中如何做到這一點。請幫忙。Golang:刪除除|以外的所有字符from string
的字符串看起來是這樣的:
|| ||| |||| || ||||| ||| || |||| hello |
,我需要它返回此:
|| ||| |||| || ||||| ||| || |||| |
提前感謝!
我需要刪除除「|」之外的所有字符和一個字符串中的空格。我不明白在Go中如何做到這一點。請幫忙。Golang:刪除除|以外的所有字符from string
的字符串看起來是這樣的:
|| ||| |||| || ||||| ||| || |||| hello |
,我需要它返回此:
|| ||| |||| || ||||| ||| || |||| |
提前感謝!
使用regex.ReplaceAllString:
ReplaceAllStringFunc返回其正則表達式的所有比賽已被取代應用於匹配的子功能REPL的返回值SRC的副本。 repl所返回的替代直接取代的,而無需使用展開。
例子:
reg := regexp.MustCompile("[^| ]+")
origStr := "|| ||| |||| || ||||| ||| || |||| hello |"
replaceStr := reg.ReplaceAllString(origStr, "")
「我想這是誘人的,如果你唯一的工具是一把錘子,到 對待每一件事,好像它是一個釘子「。 Abrahanm馬斯洛, 科學的心理學,從其他語言1966年
程序員有時候想正則表達式作爲一個錘子和對待所有文字釘子。
在圍棋,保持它的簡單和有效的,例如,
package main
import (
"fmt"
"strings"
"unicode"
)
func remove(s string) string {
return strings.Map(
func(r rune) rune {
if r == '|' || unicode.IsSpace(r) {
return r
}
return -1
},
s,
)
}
func main() {
s := "|| ||| |||| || ||||| ||| || |||| hello |"
fmt.Println(s)
s = remove(s)
fmt.Println(s)
}
輸出:
|| ||| |||| || ||||| ||| || |||| hello |
|| ||| |||| || ||||| ||| || |||| |
一個簡單的基準:
package main
import (
"regexp"
"testing"
)
var (
s = "|| ||| |||| || ||||| ||| || |||| hello |"
t string
)
func BenchmarkMap(b *testing.B) {
for i := 0; i < b.N; i++ {
t = remove(s)
}
}
func BenchmarkRegexp(b *testing.B) {
reg := regexp.MustCompile("[^| ]+")
for i := 0; i < b.N; i++ {
t = reg.ReplaceAllString(s, "")
}
}
輸出:
BenchmarkMap 5000000 337 ns/op
BenchmarkRegexp 1000000 2068 ns/op
func Map(mapping func(rune) rune, s string) string
地圖返回字符串s與它的所有字符的副本根據所述映射函數修改 。如果映射返回否定 值,字符從沒有替換字符串下降。
你嘗試過什麼?你能分享一些代碼嗎? – RickyA