Javascript或jQuery替换文本

时间:2010-03-31 12:52:56

标签: javascript jquery text replace

我需要替换body标签中页面上的一些文本。我正在使用javascript,但如果需要可以使用jquery。我基本上需要使用TEST®替换test®(使用注册商标进行测试)或使用TESTS®替换test®,甚至可以使用TEST®进行测试或使用TESTS®进行测试。我能够大写它们但它不喜欢使用®符号为我工作,它想要在已经拥有它的那些上重复。基本上,具有单词test或tests的页面上的任何内容都应为TEST®或TESTS®(如果为复数)。任何帮助表示赞赏。

编辑:
所以现在我有了这个:

var html = $('body').html();
var html = html.replace(/realtor(s)?(®)?/gi, function(m, s1, s2){
    var s = s1?s1.toUpperCase():"";
    var reg = s2?s2:'®';
    return "REALTOR"+s+reg;
});
$('body').html(html);

除了它之外,它的工作情况正在重复那些已经对他们提出过任何关于不怎么做的想法?

4 个答案:

答案 0 :(得分:3)

正如其他人已经说过的那样,你将无法匹配®,你需要匹配 \u00ae

您提供的代码需要更改为:

var html = $('body').html();
var html = html.replace(/realtor(s)?(\u00ae)?/gi, function(m, s1, s2){
    var s = s1?s1.toUpperCase():"";
    var reg = s2?s2:'®';
    return "REALTOR"+s+reg;
});
$('body').html(html);

答案 1 :(得分:1)

要扩展jAndy的答案,请尝试以下方法:

 $("div, p, span").each(function(){
  o = $(this);
  o.html( o.text().replace(/test(|s)\u00ae/gi, function($1){
     return($1.toUpperCase());
  }));
 });

使用您提供的代码,试试这个:

$(document).ready(function(){
 $('body').html( $('body').html().replace(/realtor(|s)\u00ae/gi, function($1){
  return($1.toUpperCase() );
 }));
})

答案 2 :(得分:0)

这里棘手的部分是匹配®,这是一个Unicode字符,我猜...... 你有没有试过这个明显的?

var newStr = str.replace(/test(s)?®?/gi, function(m, s1){
  var s = s1?s1.toUpperCase():"";
  return "TEST"+s+"®";
});

如果问题是®不匹配,请尝试使用其unicode字符编号:

/test(s)?\u00ae/

很抱歉,如果其余部分不起作用,我认为您的更换已经有效,您只需要匹配®,这样就不会重复。

答案 3 :(得分:0)

尝试使用备用库,而不是从头开始创建。我使用PHP开发,因此使用JavaScript中具有相同方法的库可以节省生命。

PHP.JS Library

var newReplaced = $P.str_replace("find","replace",varSearch);