如何在 listjs 黑客列表上执行正则表达式?
How to perform Regex on listjs hackerlist?
我想对 List.js 的搜索功能执行正则表达式。默认情况下,它的工作原理是搜索整个句子中存在的单词。我想要实现的是它应该搜索作为句子开头的单词。
在上图中,您看到 "Was" 存在于所有 4 个句子中,但我只希望它成为短列表,其中 "Was" 是每个句子的第一个单词。
感谢大家的建议。现在我已经通过修改核心 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 函数(在 Whosebug 上找到),它检查搜索字符串是否以给定句子的确切字符开头,并修改了 values 函数父 search 块。并将其 text.search() 函数替换为我的 startsWith 函数。
我想对 List.js 的搜索功能执行正则表达式。默认情况下,它的工作原理是搜索整个句子中存在的单词。我想要实现的是它应该搜索作为句子开头的单词。
在上图中,您看到 "Was" 存在于所有 4 个句子中,但我只希望它成为短列表,其中 "Was" 是每个句子的第一个单词。
感谢大家的建议。现在我已经通过修改核心 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 函数(在 Whosebug 上找到),它检查搜索字符串是否以给定句子的确切字符开头,并修改了 values 函数父 search 块。并将其 text.search() 函数替换为我的 startsWith 函数。