我需要帮助将换行符替换为带双引号的字符串中的空格和值。
这是我当前的表达式,但只有当字符串不包含任何其他值时,它才会替换换行符。
/"([rn]*?)"/g
我想改变这个:
"具有多行的日志字段。
现在已修复。">
为此:
- "用多行记录字段。现在已修复。">
要删除双引号之间的所有换行字符块,需要在符合条件的开始和结束双引号之间匹配这些子字符串。因此,了解"
字符是否可以在"
分隔符之间转义是至关重要的。
在CSV中,文本双引号通常是双引号。然后,您可以使用
var s = '"Cell1","Cellrn#2","""Cell #3rnherenand there"""';
s = s.replace(/"(?:""|[^"])+"/g, function(x) { return x.replace(/[^Srn]*[nr]s*/g, ' ');});
console.log(s);
"(?:""|[^"])+"/g
正则表达式匹配一个"
,然后匹配一个或多个""
子字符串或除"
以外的任何字符,然后匹配"
。当找到匹配时,使用简单的.replace(/[^Srn]*[nr]s*/g, ' ')
替换操作来移除之前和之后具有任何0+空白的所有CR和LF符号。
如果文字双引号用反斜杠转义,则可以使用
/"[^"\]*(?:\[sS][^"\]*)*"/g
如果您确定没有转义的双引号,请使用
/"[^"]+"/g
您可以在.replace()
中使用这样的函数:
var data = `
I need help to replace a newline with space in a string with double quotes and value between.
This is my current expression but it's only replace newline if string doesn't contain any other value.
I want to change this:
"Log field with multiple lines.
This is now fixed."
For this:
"Log field with multiple lines. This is now fixed."
`;
var regex = /"[^"]*"/g;
data = data.replace(regex, function (match, capture) {
return match.replace(/[nr]s*/g, " ");
});
console.log(data);
首先,它查找dobule引号之间的任何内容,其次是删除换行符和可能的连续空格。不过,这种方法不适用于转义引号。
这应该可以解决您的问题:
/rn|r|n/g
第一个备选方案\r\n
\r与回车符匹配(ASCII 13(\n匹配换行符(换行(字符(ASCII 10(
第二个备选方案\r
\r与回车符(ASCII 13(匹配
第三种选择\n
\n匹配换行符(换行(字符(ASCII 10(
g调节剂
所有比赛(第一场比赛后不返回(