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

时间:2013-02-08 20:20:30

标签: algorithm escaping

免责声明:这是一个理论问题,目的是增加我的理解。我知道我总是可以使用像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

等等...

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

然而,我怀疑如果我做得太辛苦而且有一种更简单的方法。有更简单的方法吗?

1 个答案:

答案 0 :(得分:5)

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

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

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

Example implementation.

我自己没有意识到这一点很愚蠢。