令我有点惊讶的是,网上没有任何关于此问题的信息,而且我不断发现这个问题比我想象的要棘手一些。
规则如下:
- 您从分隔/转义数据开始将其拆分为数组。
- 分隔符是一个任意字符
- 转义字符是任意一个字符
- 分隔符和转义字符都可以出现在数据中
- 正则表达式很好,但最好是性能良好的解决方案
- 编辑:可以忽略空元素(包括前导或结束分隔符)
代码签名(在 C# 中基本上是)
public static string[] smartSplit(
string delimitedData,
char delimiter,
char escape) {}
当然,问题最棘手的部分是转义的连续转义字符大小写,因为(调用 / 转义字符和 ,分隔符): ////////, = ////,
我是否遗漏了在网络上或另一个问题中处理此问题的地方?如果没有,请发挥你的聪明才智……我认为这个问题对于公众利益来说是很好的。我自己正在研究,但还没有好的解决方案。
简单的状态机通常是最简单、最快的方法。 Python 中的示例:
def extract(input, delim, escape):
# states
parsing = 0
escaped = 1
state = parsing
found = []
parsed = ""
for c in input:
if state == parsing:
if c == delim:
found.append(parsed)
parsed = ""
elif c == escape:
state = escaped
else:
parsed += c
else: # state == escaped
parsed += c
state = parsing
if parsed:
found.append(parsed)
return found
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)