gpt4 book ai didi

c# - 任意定界符/转义字符处理的最佳算法是什么?

转载 作者:太空狗 更新时间:2023-10-29 17:34:44 25 4
gpt4 key购买 nike

令我有点惊讶的是,网络上没有这方面的一些信息,而且我一直发现这个问题比我想象的要棘手一些。

规则如下:

  1. 您从分隔/转义数据开始拆分成一个数组。
  2. 分隔符是一个任意字符
  3. 转义字符是一个任意字符
  4. 分隔符和转义符都可以出现在数据中
  5. Regex 很好,但性能好的解决方案是最好的
  6. 编辑:可以忽略空元素(包括前导或结束分隔符)

代码签名(在 C# 中基本上是)

public static string[] smartSplit(
string delimitedData,
char delimiter,
char escape) {}

问题中最棘手的部分当然是转义的连续转义字符大小写,因为(调用/转义字符和分隔符):////////, =////,

我是否遗漏了在网络上或在另一个 SO 问题中处理的某个地方?如果没有,请动动脑筋……我认为这个问题对于公共(public)利益来说是很好的。我正在自己研究,但还没有好的解决方案。

最佳答案

简单的状态机通常是最简单和最快的方法。 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

关于c# - 任意定界符/转义字符处理的最佳算法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/667803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com