用排版开头报价替换奇数匹配,甚至与印刷结束报价匹配

时间:2012-05-16 11:26:13

标签: javascript regex quotes smart-quotes

我正在尝试使用印刷引号(«和»)替换文本中的常规引号符号(“)。

有没有办法用«替换奇数引号匹配?甚至匹配»?

所以:你好“世界”! 成为:你好«世界»!

此外,如果文本没有偶数引号,它应该没有任何问题,因为这是为了“即时”执行

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

/**
 * @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;
  });
}

答案 1 :(得分:0)

我想出了另一种方法,但我不确定哪一种更“优化”:

function quotify2(inputStr)
{
    var quotes = inputStr.match(/«|»/g);
    return inputStr.replace(/"/g, (quotes && quotes.length % 2 != 0 ? '»' : '«'));
}