免责声明:这是一个理论问题,目的是增加我的理解。我知道我总是可以使用像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
。
等等...
解码过程必须执行反向递归。
然而,我怀疑如果我做得太辛苦而且有一种更简单的方法。有更简单的方法吗?
答案 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);
我自己没有意识到这一点很愚蠢。