面试题答案
一键面试package main
import (
"fmt"
"strings"
)
func splitWithEmpty(str, sep string) []string {
result := strings.Split(str, sep)
// 处理开头的分隔符
for len(str) > 0 && strings.HasPrefix(str, sep) {
result = append([]string{""}, result...)
str = strings.TrimPrefix(str, sep)
}
// 处理结尾的分隔符
for len(str) > 0 && strings.HasSuffix(str, sep) {
result = append(result, "")
str = strings.TrimSuffix(str, sep)
}
return result
}
func main() {
testStr := "::a::b::"
testSep := "::"
result := splitWithEmpty(testStr, testSep)
fmt.Println(result)
}
在上述代码中:
splitWithEmpty
函数接收一个字符串str
和分隔符sep
。- 首先使用
strings.Split
进行常规分割。 - 然后通过
strings.HasPrefix
和strings.HasSuffix
分别检查字符串开头和结尾是否有连续的分隔符,若有则在结果切片对应位置插入空字符串元素。 - 在
main
函数中进行简单测试,输出分割后的结果。
你可以根据实际需求调整测试用例和测试方式。