You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何分割字符串并将被分割元素保留为空字符串?

解决方案

核心思路

从你的示例来看,需求本质是将字符串拆分为单个字符对应的元素列表,其中指定的分隔符字符替换为空字符串,其他字符保持原样。这种方式天然保留首尾的空元素(如果首尾是分隔符),完全符合你的要求。

具体实现

Python 代码

def split_keep_empty(s, delimiter):
    return [char if char != delimiter else "" for char in s]

# 测试用例
print(split_keep_empty("abaca", "a"))  # 输出: ['', 'b', '', 'c', '']
print(split_keep_empty("xzxzxz", "z"))  # 输出: ['x', '', 'x', '', 'x', '']

Scala 代码(针对你提到的interspersing场景)

不需要用interspersing,直接转换字符列表即可:

def splitKeepEmpty(s: String, delimiter: Char): List[String] = {
  s.toList.map(c => if (c == delimiter) "" else c.toString)
}

// 测试
splitKeepEmpty("abaca", 'a')  // 结果: List("", "b", "", "c", "")
splitKeepEmpty("xzxzxz", 'z')  // 结果: List("x", "", "x", "", "x", "")

另一种可能:按分隔符分割并保留所有空元素

如果你的真实需求是按分隔符分割字符串(而非单个字符拆分),可以用支持保留所有空元素的分割方法:

Python 代码

Python默认的split已经会保留所有空元素(包括首尾):

"abaca".split("a")  # 输出: ['', 'b', '', 'c', '']

Java 代码

Java需要指定分割次数为-1来保留末尾空元素:

"abaca".split("a", -1);  // 结果: ["", "b", "", "c", ""]
"xzxzxz".split("z", -1);  // 结果: ["x", "", "x", "", "x", ""]

内容的提问来源于stack exchange,提问作者Pixelz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:35:06