【问题标题】:JavaScript / case-insensitiveJavaScript / 不区分大小写
【发布时间】:2012-12-12 16:15:19
【问题描述】:

我有这个功能来过滤值以实现自动完成功能:

 store.filter(new Ext.util.Filter({
    filterFn: function (object) {
        var match = false;
        Ext.Object.each(object.data, function (property, value) {
        match = match || value.match(Ext.getCmp('search_input_text').getValue());

        });
        return match;
      }

我需要它不区分大小写,以便大小写相同。

value.match(Ext.getCmp('search_input_text').getValue());

类似 LIKE 在 sql 中的东西。我该怎么做?

【问题讨论】:

  • 如何存储要比较的项目并在 em 上临时执行.toLowerCase(),但返回原始项目?

标签: javascript case-sensitive case-insensitive


【解决方案1】:
  1. Regexp 有一个使用字符串参数的构造函数。
  2. 如果您需要布尔结果,请不要使用 ma​​tch,而是使用 test

    store.filter(new Ext.util.Filter({
        filterFn: function (object) {
            var match = false;
            Ext.Object.each(object.data, function (property, value) {
                var filterValue = Ext.getCmp('search_input_text').getValue();  
                var r = new RegExp(filterValue, 'i'); 
                match = match || r.test(value);  
            });
            return match;
        }
     ...
     }
    

【讨论】:

    【解决方案2】:

    如果你想要一个不区分大小写的搜索,你可以写

    match = (match.toLowerCase().indexOf("search_input_text") >= 0) ? "search_input_text" : match;
    

    【讨论】:

      【解决方案3】:
      var a = "ABC"
      a = a.toLowerCase();
      //a == "abc"
      

      将两个值转换为小写,然后比较它们。如果它们是相同的字母,无论大小写如何,它都会返回 true:

      假设您的valueString

      var input = Ext.getCmp('search_input_text').getValue();
      match = value.toLowerCase().match(input.toLowerCase()) ? input : match;
      

      这使用临时变量以原始大小写返回值。

      【讨论】:

        猜你喜欢
        • 2018-06-17
        • 1970-01-01
        • 1970-01-01
        • 2013-02-03
        • 2012-12-01
        • 2013-03-06
        • 2020-02-18
        • 1970-01-01
        相关资源
        最近更新 更多