2015-08-26 20 views
0

我想对List.js的搜索功能执行正则表达式。默认情况下它的工作原理是它搜索整个句子中存在的单词。我想要实现的是它应该搜索一个句子开始的单词。如何在listjs hackerlist上执行Regex?

enter image description here

在上面的图片中,可以看到“被”在所有4句存在,但我只希望它短名单,其中“被”是每句的第一个字。

ListJs Source

+1

你可能会尝试类似这样的'(?:^ | [!?\。])\ s * Was',你可以匹配一行或标点符号的开头,然后是可选空格和关键字 – bro

+1

I认为你可能想为它编写自己的插件... – nhahtdh

+0

[*'options.sortFunction'用于如果你想创建自己的排序函数。*](http://www.listjs.com/docs/list -API#排序)。我想正确的方法是编写这个函数(也许,通过采取[这个默认的](https://github.com/javve/natural-sort/blob/master/index.js)和写你的基础上)并将其传递给排序方法。 –

回答

0

谢谢你们的建议。现在我已经通过修改核心list.js文件完成了一个解决方法。我换成:

var search = { 
    list: function() { 
     for (var k = 0, kl = list.items.length; k < kl; k++) { 
      search.item(list.items[k]); 
     } 
    }, 
    item: function(item) { 
     item.found = false; 
     for (var j = 0, jl = columns.length; j < jl; j++) { 
      if (search.values(item.values(), columns[j])) { 
       item.found = true; 
       return; 
      } 
     } 
    }, 
    values: function(values, column) { 
     if (values.hasOwnProperty(column)) { 
      text = toString(values[column]).toLowerCase(); 
      if ((searchString !== "") && (text.search(searchString) > -1)) { 
       return true; 
      } 
     } 
     return false; 
    }, 
    reset: function() { 
     list.reset.search(); 
     list.searched = false; 
    } 
}; 

随着

if (typeof String.prototype.startsWith != 'function') { 
    // see below for better implementation! 
    String.prototype.startsWith = function (str) { 
     return this.indexOf(str) === 0; 
    }; 
} 
var search = { 
    list: function() { 
     for (var k = 0, kl = list.items.length; k < kl; k++) { 
      search.item(list.items[k]); 
     } 
    }, 
    item: function(item) { 
     item.found = false; 
     for (var j = 0, jl = columns.length; j < jl; j++) { 
      if (search.values(item.values(), columns[j])) { 
       item.found = true; 
       return; 
      } 
     } 
    }, 
    values: function(values, column) { 
     if (values.hasOwnProperty(column)) { 
      text = toString(values[column]).toLowerCase(); 
      if ((searchString !== "") && (text.startsWith(searchString))) { 
       return true; 
      } 
     } 
     return false; 
    }, 
    reset: function() { 
     list.reset.search(); 
     list.searched = false; 
    } 
}; 

说明: 我创建startsWith功能(在计算器中),检查搜索字符串是否与给定句子的准确字符开头,并修改的值功能父母搜索块。并用我的startsWith函数替换了text.search()函数。