Javascript 用印刷体开头引号替换奇数匹配,用印刷体结尾引号替换偶数匹配
我试图用排版引号(«和»)替换文本中的常规引号符号(“) 有没有办法用«替换奇数引号匹配,用»替换偶数匹配 所以:你好“世界”! 变成:你好«世界» 此外,如果文本没有偶数个引号,那么它应该不会有任何问题,因为这是为了“动态”执行的Javascript 用印刷体开头引号替换奇数匹配,用印刷体结尾引号替换偶数匹配,javascript,regex,quotes,smart-quotes,Javascript,Regex,Quotes,Smart Quotes,我试图用排版引号(«和»)替换文本中的常规引号符号(“) 有没有办法用«替换奇数引号匹配,用»替换偶数匹配 所以:你好“世界”! 变成:你好«世界» 此外,如果文本没有偶数个引号,那么它应该不会有任何问题,因为这是为了“动态”执行的 谢谢你的帮助!我想出了另一种方法,但我不确定哪种方法更“优化”: /** * @param {string} input the string with normal double quotes * @return {string} string with th
谢谢你的帮助!我想出了另一种方法,但我不确定哪种方法更“优化”:
/**
* @param {string} input the string with normal double quotes
* @return {string} string with the quotes replaced
*/
function quotify(input) {
var idx = 0;
var q = ['«', '»'];
return input.replace(/"/g, function() {
var ret = q[idx];
idx = 1 - idx;
return ret;
});
}
我想出了另一种方法,但我不确定哪一种更“优化”:
谢谢,这正是我要找的!谢谢,这正是我要找的!在我看来,这将用
>
或
替换所有双引号,而不在它们之间交替。它旨在在键入时运行(onKeyUp),因此“替换”只替换最后输入的引号。您的函数实际上更通用,因为它始终适用于整个文本或键入时。我现在使用的是您的版本:)在我看来,这将用>
或«
替换所有双引号,而不在它们之间交替。它旨在在输入(onKeyUp),因此“替换”仅替换上次输入的引号。实际上,您的函数更通用,因为它始终适用于整个文本或键入时。我现在使用的是您的版本:)
function quotify2(inputStr)
{
var quotes = inputStr.match(/«|»/g);
return inputStr.replace(/"/g, (quotes && quotes.length % 2 != 0 ? '»' : '«'));
}