0

我想对 List.js 的搜索功能执行正则表达式。默认情况下,它的工作原理是搜索存在于整个句子中的单词。我想要实现的是它应该搜索一个作为句子开头的单词。

在此处输入图像描述

在上图中,您看到所有 4 个句子中都存在“Was”,但我只希望它列出“Was”是每个句子的第一个单词的短名单。

ListJs 源码

4

1 回答 1

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函数(在stackoverflow上找到)检查搜索字符串是否以给定句子的确切字符开头,并修改了父搜索块的值函数。并用我的 startsWith 函数替换了它的 text.search() 函数。

于 2015-08-26T08:43:23.993 回答