有个REST接口,能提供中文繁体到中文简体的转换服务,为了提高转换效率,需要将多个字符串合并为一个字符串,进行转换后再进行拆分,请提供一种字符串合并与拆分的解决方案。
通过审题,实现方案的核心在于分割字符串的设计方案,简单的方法有:
1. 提供业务中不可能出现的字符,比如日文字符;
2. 充分利用JSON.stringify与JSON.parse特性,实现字符串的编码与解码;
除此以外,还可以设计一种自定义的解决方案,首先替换目标字符串的分割字符,必须保证目标字符串的尾部不会出现分割字符,以“,,”为分割符,实现方案如下:
1. 首先将目标字符串中的逗号替换为“,\”,这样可以保证字符串尾部即使出现“,”,也不会拼接在分割字符串中,导致分割失败;其次,即使字符串中出现连续的“,”,也不会出现字符分割失败的清醒;
2. 以“,,”为分割符合并字符串;
3. 以“,,”为分割符切分字符串;
4. 遍历数组,将“,\”替换为“,”;
代码实现如下:
var array = ['1,', '2\\', '3\\,', '4', ',5'],
str;
for(var i =0, len=array.length; i < len; i++) {
// 替换“,”,避免内容的干扰
array[i] = array[i].replace(/\,/g, '\,\\')
}
// 合并字符串
str = array.join(",,");
// 拆分字符串
var splitArr = str.split(',,');
for(i = 0, len = splitArr.length; i < len; i++) {
splitArr[i] = splitArr[i].replace(/\,\\/g, '\,')
}
// 测试结果与源字符串保持一致
console.log(splitArr)
结论
字符串合并与拆分的关键在与分割字符串的设计,其核心在于避免内容字符串与分割字符串的干扰。