0

List.js の検索機能で正規表現を実行したいと思います。デフォルトでどのように機能するかは、文全体に存在する単語を検索することです。私が達成したいのは、文の始まりである単語を検索することです。

ここに画像の説明を入力

上の写真では、「Was」が 4 つの文すべてに存在することがわかりますが、「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 にあります) を作成し、親検索ブロックの値関数を変更しました。その text.search() 関数を私の startsWith 関数に置き換えました。

于 2015-08-26T08:43:23.993 に答える