我需要用 '\'(反斜杠和撇号)替换特殊字符 '(撇号),但这只适用于字符串的中间部分,而不是字符串的开头和结尾。
例如:
字符串中可能有多个撇号。我只想替换字符串中不是起始和结束字符的撇号。
请分享任何想法。
例如:
msg ='My Son's Daughter';
字符串中可能有多个撇号。我只想替换字符串中不是起始和结束字符的撇号。
请分享任何想法。
msg ='My Son's Daughter';
通过结合使用 substr()
和正则表达式:
var msg ="'My Son's Daughter'";
msg = msg.substr(0, 1) + msg.substr(1, msg.length-2).replace(/'/g, "\\'") + msg.substr(msg.length-1, 1);
输出:
'My Son\'s Daughter'
'
被替换,第一个和最后一个则被忽略。尝试
msg = msg.replace(/(.)'(.)/g, "$1\\'$2");
.
在开头和结尾会要求在'
之前和之后匹配任何字符。
()
将捕获其中定义的字符(.
)到变量中($1
和$2
)。
$1
和$2
表示两个()
捕获的字符。
\\
转义或表示文本中的字面\
在g
之前的开头的/
定义为正则表达式(regex)
g
是一个修饰符(全局),将指示所有出现的情况。
Regex不应被放在引号中,就像它是一个字符串一样。
My Son\'s Daughter
,而操作者想要类似于 My Son\s Daughter
的输出。 - Devang Rathodg
了。我刚刚把它加回去了。 - nl-xreplace函数就是你想要的。这个函数可以解决你的问题:
msg = msg.replace(/'/g, "\\'");
'
斜杠化,只希望对它们之间的字符进行操作。因此这不是一个解决方案。 - nl-x'
字符是字符串定界符。这段代码不会替换字符串定界符。 - alnorth29msg ='My Son's Daughter'
。这甚至是有效的语法吗? - alnorth29msg ='My Son's Daughter';
,代码是 var myString "msg ='My Son's Daughter';";
... 结果应该是 msg =\'My Son\'s Daughter';
;) - nl-x
msg = msg.replace(/'/g, "\'")
?- 开始和结束的引号是字符串定界符... - Niccolò Campolungo:
,你指的是撇号。 - nl-x