私は "|"以外のすべての文字を削除する必要があります文字列からの空白文字。私はGoでこれを行う方法を理解していません。助けてください。Golang:|を除くすべての文字を削除します。文字列から
文字列は次のようになります。
|| ||| |||| || ||||| ||| || |||| hello |
と私はそれがこの返却する必要があります。事前に
|| ||| |||| || ||||| ||| || |||| |
感謝を!
私は "|"以外のすべての文字を削除する必要があります文字列からの空白文字。私はGoでこれを行う方法を理解していません。助けてください。Golang:|を除くすべての文字を削除します。文字列から
文字列は次のようになります。
|| ||| |||| || ||||| ||| || |||| hello |
と私はそれがこの返却する必要があります。事前に
|| ||| |||| || ||||| ||| || |||| |
感謝を!
使用regex.ReplaceAllString:
ReplaceAllStringFuncは、正規表現のすべてのマッチはマッチした部分文字列に適用される機能のREPLの戻り値によって置き換えられている、srcのコピーを返します。 replで返された置換は、Expandを使用せずに直接置換されます。
例:
reg := regexp.MustCompile("[^| ]+")
origStr := "|| ||| |||| || ||||| ||| || |||| hello |"
replaceStr := reg.ReplaceAllString(origStr, "")
ドキュメント: https://golang.org/pkg/regexp/#Regexp.ReplaceAllString
「私はあなたが持っている唯一のツールがハンマーであれば、それは、魅力的であると仮定し、 はすべてをあたかも爪のように扱います。 " 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