MST

星途 面试题库

面试题:Go语言strings包中分割字符串并处理特殊情况

假设你需要使用Go语言strings包的函数将一个字符串按照指定分隔符进行分割。但存在一种特殊情况,如果分隔符在字符串开头或者结尾连续出现多次,分割结果中对应位置需要保留空字符串元素。请编写函数实现这个功能,并对函数进行测试。
49.5万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
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)
}

在上述代码中:

  1. splitWithEmpty 函数接收一个字符串 str 和分隔符 sep
  2. 首先使用 strings.Split 进行常规分割。
  3. 然后通过 strings.HasPrefixstrings.HasSuffix 分别检查字符串开头和结尾是否有连续的分隔符,若有则在结果切片对应位置插入空字符串元素。
  4. main 函数中进行简单测试,输出分割后的结果。

你可以根据实际需求调整测试用例和测试方式。