我正在编写代码,将哑引号转换为智能引号:
text.replace(/\b"|\."/g, '”')
(我添加了OR句号,因为有时句子以句点而不是单词结尾。)
输入:
"This is a text."
输出:
“This is a text”
所需的输出:
“This is a text.”
如您所见,该代码删除了点。
如何防止这种情况?
规则:我想替换单词末尾或句点后的哑双引号,将它们变成正确的双智能引号。
答案 0 :(得分:1)
您应该将捕获组1包含在替换组中,您可以使用:
replace(/\b"$|(\.)"$/g, "$1”");
$ 1将包含。
添加$您将避免错过以下情况:
"This is a "text"."
编辑新规则:
如果您还希望替换引号的内部引号,请执行此操作>
const regex = /( ")([\w\s.]*)"(?=.*"$)|\b"$|(\.)?"$/g;
const str = `"This is a "subquote" about "life"."`;
const subst = `$1$2$3”`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
“您永远在公司中生活”
“您总是在公司中“独居””
“你活着”,“永远陪伴”
“您总是在黑暗中生活……”
“您总是在公司中非常“孤独”地生活在“一个人”中
答案 1 :(得分:1)
请尝试以下操作:
let text = '"This is a text."'
console.log(
text.replace(/\b"|(\.)"/g,'$1\u201d')
)