我正在进行字符串验证。基本上,我想用逗号替换新行,但我也希望双引号内的文本保持其间的空间..
例如,如果我对textarea的输入如下(在行之间):
A“B C”D
E 123
F 456
我希望它输出 - > A,B C,D,E 123,F 456
在我的AngularJS服务中,我可以使用this.stringReplace(styleStr, '\n', ',');
替换新行,然后我的双引号验证的正则表达式是这样的:
styleStr.replace(/ +(?=([^"\\]*(\\.|"([^"\\]*\\.)*[^"\\]*"))*[^"]*$)|^(?!\n)*$/g, ',').replace(/"/g, ',');
...我的stringReplace函数是这样的:
stringReplace: function (string, text, by) {
// Replaces text with by in string
var strLength = string.length,
txtLength = text.length;
if ((strLength === 0) || (txtLength === 0)) {
return string;
}
var i = string.indexOf(text);
if ((!i) && (text !== string.substring(0, txtLength))) {
return string;
}
if (i === -1) {
return string;
}
var newstr = string.substring(0, i) + by;
if (i + txtLength < strLength) {
newstr += this.stringReplace(string.substring(i + txtLength, strLength), text, by);
}
return newstr;
}
目前,第一行(A“B C”D)格式正确,但是删除了E 123之间的空格,以及F 456之间的空格。我哪里出错?