我有以下输入文本:
string name;
string type;
string class;
...
我希望将它们转换为以下内容:
string $name;
string $type;
string $class;
...
我尝试使用正则表达式:
Javascript:
"string name;".replace(/string (\w+)/,"string \$$1");
Produces (javascript console):
string $1;
string $1;
string $1;
...
Produces (regexr prompt):
string \$1;
string \$1;
string \$1;
...
为什么在第一个$工作之前不插入反斜杠?实现此目的的正确表达是什么?
注意:我使用regexr(运行客户端javascript)批处理我的文本,然后使用Javascript控制台和Chrome Devtools中的String.prototype.replace
函数来测试连续$符号的行为
答案 0 :(得分:2)
JavaScript字符串中的反斜杠仅在其处于转义序列中时才有意义-例如,'\n'
被翻译为原义换行符,'\\'
被翻译为文字反斜杠,等等。如果您在转义序列的不是部分的字符前加上反斜杠,例如'\$'
,则反斜杠将被忽略:
const str = '\$';
console.log(str);
console.log(str.length);
不过,文字反斜杠仍无法解决您的问题。请参见docs-将文字$
作为替换字符串的一部分插入,请使用$$
($
本质上是一个转义字符,有点像{{ 1}}是字符串文字中的转义字符):
\
答案 1 :(得分:1)
由于要搜索“ string \w+
”的组合,因此可以使用更简单的搜索并替换:
str.replace(/string /g, "string $")
这会在每个string
之后添加一个$,后跟一个空格
var str = "string name;\nstring type;\nstring class;"
console.log("Original:")
console.log(str);
console.log("New:")
console.log( str.replace(/string /g, "string $") );