【问题标题】:jQuery String Contains Manipulation?jQuery 字符串包含操作?
【发布时间】:2009-04-28 23:29:55
【问题描述】:

在大多数语言(如 C#)中,例如给定一个字符串,您可以测试(布尔值)该字符串是否包含另一个字符串,基本上是该字符串的子集。

string x = test2;


if(x.contains("test"))
    // do something

如何使用 Javascript/Jquery 以简单的方式做到这一点?

【问题讨论】:

标签: javascript jquery string


【解决方案1】:

这是通过 indexOf 完成的,但是如果没有找到它会返回 -1 而不是 False。

语法
string.indexOf(searchValue[, fromIndex])

参数
searchValue - 表示要搜索的值的字符串。
fromIndex - 在string 内开始搜索的位置。它可以是介于 0 和string 长度之间的任何整数。默认值为 0。

返回
string 中可以找到子字符串开头的第一个索引,如果 string 不包含子字符串的任何实例,则为 -1。

【讨论】:

  • 我看到indexOf 区分大小写。要进行不区分大小写的比较,我使用if(t.toUpperCase().indexOf(s.toUpperCase()) >= 0) { /* found */ }
【解决方案2】:

正如 Paolo 和 cletus 所说,您可以使用 indexOf() 来实现。

值得一提的是它是一个 javascript 函数,而不是 jQuery 函数。

如果您想要一个 jQuery 函数来执行此操作,您可以使用它:

jQuery.fn.contains = function(txt) { return jQuery(this).indexOf(txt) >= 0; }

【讨论】:

  • 这个实现有个bug:如果搜索到的字符串以txt开头,会返回false。使用 >= 而不是 >.
  • 更正了 Jacob 的评论
  • jQuery(this) 返回一个 jQuery 对象,而不是字符串。 indexOf 在该 jQuery 对象中不存在。 this 也不是字符串,因此您需要知道要检查this 的哪一部分txt。也许return this.src.indexOf(txt) >= 0;?
【解决方案3】:

indexOf 运算符适用于简单的字符串。如果您需要更复杂的东西,值得指出的是Javascript supports regular expressions。

【讨论】:

    【解决方案4】:

    简单的包含也很有用,例如:

    <div class="test">Handyman</div>
    
    
    $(".test:contains('Handyman')").html("A Bussy man");
    

    【讨论】:

      【解决方案5】:

      一个工作示例,仅使用 indexOf 和 jQuery

      // Add span tag, if not set
      $(document).ready(function(c) {
        $('div#content ul.tabs li a').each(function(c){
          // Add span wrapper if not there already
          if( $(this).html().indexOf('span') == -1){
            $(this).html('<span class="tab">' + $(this).html() + '</span>');
          }
        });
      });
      

      DT

      【讨论】:

      • 你是 Wendy's 的 Dave Thomas 吗?如果是这样,我在那里吃午饭。很棒的汉堡。
      【解决方案6】:

      尝试实现这个

      function function1() {
          var m = document.all.myDiv.contains(myB);
          if (m == true){ 
              m = "YES"
          } else {
              m = "NO"
          }
          alert(m)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-11
        • 2019-03-16
        • 2021-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多