Algorithm 最简单(最正确)的转义算法是什么?

Algorithm 最简单(最正确)的转义算法是什么?,algorithm,escaping,Algorithm,Escaping,免责声明:这是一个理论问题,旨在增加我的理解。我知道我总是可以使用JSON库之类的工具来解决这个问题 假设我想创建一个逗号分隔的值列表,这些值本身可能包含逗号。这些逗号需要先转义。假设我使用作为转义字符,那么[“a”,“b,c”]变成a,b,c 但是,如果其中一个值最初包含,序列,那么我们需要在转义逗号之前转义这些值。所以[“a”,“b,c”]变成a,b…,c 但是,如果其中一个值最初包含,序列,那么我们需要在转义逗号之前转义这些值。所以[“a”,“b…”,c”]变成a,b…”,c 但是,如果其

免责声明:这是一个理论问题,旨在增加我的理解。我知道我总是可以使用JSON库之类的工具来解决这个问题

假设我想创建一个逗号分隔的值列表,这些值本身可能包含逗号。这些逗号需要先转义。假设我使用
作为转义字符,那么
[“a”,“b,c”]
变成
a,b,c

但是,如果其中一个值最初包含
序列,那么我们需要在转义逗号之前转义这些值。所以
[“a”,“b,c”]
变成
a,b…,c

但是,如果其中一个值最初包含
序列,那么我们需要在转义逗号之前转义这些值。所以
[“a”,“b…”,c”]
变成
a,b…”,c

但是,如果其中一个值最初包含
…,
序列,那么我们需要在转义逗号之前转义这些值。所以
[“a”,“b…,c”]
变成
a,b…,c

等等

解码过程必须执行反向递归


然而,我怀疑如果我把它做得太难,有一个更简单的方法。有更简单的方法吗?

感谢@mkbeckish的评论,我意识到该算法可以实现为:

// encoding
text.replace(escape, escape + escape);
text.replace(delim , escape + delim);

// decoding
text.replace(escape + delim , delim);
text.replace(escape + escape, escape);


我自己都没有意识到这一点,这太傻了。

为什么你觉得这太复杂了?找到一个转义字符,检查它后面的内容,在此基础上做一个动作,重复。你说的“更简单”是什么意思?这似乎天生是主观的。首先,期望人们离开这个网站去弄清楚你问的问题通常不是怎么回事(如果由于某种原因,场外位置不可用,你的问题就变得毫无意义)。第二,既然您有工作代码,并且希望对其进行改进,那么这实际上是属于您的。您为什么要逃避“,”到“…”?我认为典型的方法是分别将每个文本“to.”和每个“to.”转义。所以,“,”会变成“…”@mbeckish-Doh!可能是这样。我认为这不包括您问题中所示的多个值的存储。例如,您可以将
[“a”,“b,”]
编码为
“a,b,”
,但如果您只需在
上进行简单的字符串拆分,然后使用解码算法,您将得到
[“a”,“b.”,“]
。如果您先解码,然后拆分字符串,您将得到
[“a”,“b”,““”]
;我想我用错词了。我指的是对数组中的每个字符串进行编码,然后使用逗号连接结果的过程,如您问题中的第一个示例所示。请用实际示例证明我错了,我会修复它。如果您愿意,可以将其作为起点。我已经给了您一些示例数据,但您还没有提供运行它的实现。您的实现进行编码,但不将多个字符串聚合为单个字符串。我不理解您所说的任何内容。很抱歉