我有一个简单的 HTML 文件,其中输入文本 id="ERP",我希望用户能够找到与 CSV 文件内容完全匹配的内容。这是我一直试图修复的代码。这会搜索 CSV 文件,但返回的结果与从输入框输入的值不完全一样,例如,输入框值 =“CH-134”,输出将显示“CH-134-DT”的数据,我该如何制作搜索结果与输入完全相同?预先感谢您。
var DB = new Array();
function MakeDB() { DB = CSV.split('\n'); }
function CSVsearch(dbInfo) {
var posn = -1;
for (i=0; i<DB.length; i++) {
tmp = DB[i];
if (tmp.indexOf(dbInfo) != -1) { posn = i; break; }
}
if (posn == -1) { alert('No matching result from the file'); }
else { document.getElementById('tblDisplay').innerHTML = displayAsTable(DB[posn]); }
}
function displayAsTable(info) {
var table = '<table border="1" width="75%" bgColor="F5F5F5" borderColor="FFFFFF">';
var ary = info.split(',');
table += '<tr align="left"><th align="left">'+ary.join('</tr><th align="left">')+'</td></tr>';
table += '</table>';
return table;
}
function resetthis() {
document.getElementById("myForm").reset();
}
最佳答案
我想我会使用 Javascript str.match(regexp) function和正则表达式,而不是使用 str.indexOf(searchValue) 函数。
所以对于你的情况,我会做类似的事情:
var regex = '/\b' + dbInfo + '\b/g';
var matches = tmp.match(regex);
if (matches.length > 0)
{ ... }
只需将上面的“\b”替换为您希望分隔传入数据的任何内容即可。例如,如果您希望在数据集中找到 CH-134,并且前后都有空格,则可以将“\b”留在那里。如果数据集中包含逗号,则可以将 '\b' 替换为 ','。或者,如果您只知道要匹配的单词的终止符,则可以省略正则表达式中的第一个“\b”。例如,您可以执行以下操作:
//finds occurences of dbInfo with anything before it, but only a comma after it
var regex = '/' + dbInfo + ',/g';
//finds occurences of dbInfo with a word break before it, and no hyphen after it
var regex = '/\b' + dbInfo + '[^-]/g';
您可能能够想出一个更好、更精确的正则表达式来满足您的需求。我最喜欢使用和测试正则表达式的网站是 http://regexr.com/
祝你好运!
关于javascript - 从用户输入中查找 csv 文件内容的精确值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34931924/