任意分隔符/转义字符处理的最佳算法是什么?

2023-11-22

令我有点惊讶的是,网上没有任何关于此问题的信息,而且我不断发现这个问题比我想象的要棘手一些。

规则如下:

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

代码签名(在 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(使用前将#替换为@)

任意分隔符/转义字符处理的最佳算法是什么? 的相关文章

随机推荐