如何从字符串中获取分隔符之前和之后的切片?在Python中,我可以简单地写
user, _, domain = "foo@example.com".partition("@")
assert user == "foo"
assert domain == "example.com"
值得注意的是,如果输入中出现多次出现分隔符,或者根本没有出现分隔符,则此方法也有效。如何在Go中轻松分割字符串?
答案 0 :(得分:4)
你可以使用这个包装SplitN
的辅助函数:
import "strings"
func Partition(s string, sep string) (string, string, string) {
parts := strings.SplitN(s, sep, 2)
if len(parts) == 1 {
return parts[0], "", ""
}
return parts[0], sep, parts[1]
}
答案 1 :(得分:1)
确实,SplitN允许您解析最多n
个字符串。如果您需要更简单的电子邮件检查,您可以尝试类似下面的代码。不要忘记检查错误。
package main
import (
"fmt"
"strings"
"errors"
)
func Separate(str, separator string) (string, string, error){
sepIndex := strings.Index(str, separator)
if sepIndex >= 0 {
return str[0 : (sepIndex)], str[sepIndex+len(separator) : len(str)], nil
} else {
return "", "", errors.New("Separator now found!")
}
}
func main(){
str := "@xmyname@xample.com"
fmt.Println("Initial string: ", str)
p1, p2, err := Separate(str, "@x")
if err != nil{
fmt.Println(err)
} else {
fmt.Println("Slice 1:", p1, "\nSlice 2:",p2)
}
}