【问题标题】:Javascript or jQuery replace textJavascript 或 jQuery 替换文本
【发布时间】:2011-02-02 22:10:26
【问题描述】:

我需要在 body 标记内替换页面上的一些文本。我正在使用 javascript,但如果需要,可以使用 jquery。我基本上需要用 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);

除了将 ® 复制到已经知道如何不这样做的那些上之外,它运行良好吗?

【问题讨论】:

  • 只是 google javascript 文本替换,第一个链接出现在 tizag.com 上就足够了,好点点
  • 使用® 或任何HTML 转义码的问题在于浏览器将其转换为实际符号。要使用字符串函数获取该符号,请使用“®”,但如果您使用匹配、替换等,则必须使用 unicode 值“\u00ae”。请参阅下面的答案。

标签: javascript jquery text replace


【解决方案1】:

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

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

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

/test(s)?\u00ae/

抱歉,如果其余部分不起作用,我假设您的替换已经起作用,您只需要匹配 ® 以免重复。

【讨论】:

    【解决方案2】:

    与其从头开始创建东西,不如尝试使用备用库。我使用 PHP 进行开发,因此在 JavaScript 中使用具有相同方法的库可以挽救生命。

    PHP.JS Library

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

    【讨论】:

    • -1(你只是看不到它......因为我没有选票)。自我推销总是不好的,但你的很糟糕。
    • 我将此库与 jQuery 结合使用。没有真正的问题。
    【解决方案3】:

    要扩展 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() );
     }));
    })
    

    【讨论】:

    • 效果很好,唯一的问题是,如果没有 ®最后(例如房地产经纪人)它不添加®在那里。我需要它来做到这一点。有什么想法吗?
    • 给了你一个加分,因为你确实帮助获得了解决方案。
    • 你的问题的写法似乎是 ®已经存在,因此此替换功能将查找 realtor® 或 realtors® 的所有实例并将其设为大写,因此您无需添加另一个“®”。无论如何,很高兴您有您的解决方案,并感谢您的支持。
    【解决方案4】:

    正如其他人已经说过的,您将无法匹配®,您需要匹配
    \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);
    

    【讨论】:

      猜你喜欢
      • 2014-05-24
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 2013-12-13
      • 1970-01-01
      相关资源
      最近更新 更多