在javascript字符串中搜索类似值
我有一个javascript脚本字符串,如下所示在javascript字符串中搜索类似值,javascript,Javascript,我有一个javascript脚本字符串,如下所示 var name = "John Peter James"; inputValue = "Pe Jame"; //returns true inputValue = "Pes James"; // returns false inputValue = "John"; //returns true inputValue = "Joh Pete Ja"; //returns true inputValue = "Jon Peter James";
var name = "John Peter James";
inputValue = "Pe Jame"; //returns true
inputValue = "Pes James"; // returns false
inputValue = "John"; //returns true
inputValue = "Joh Pete Ja"; //returns true
inputValue = "Jon Peter James"; // returns false
inputValue = "John John"//returns false
现在我还有一个输入字段
<input type="text" id="searchForNames" />
var inputVal = "Pe Jame";
“Pe”是“Peter”的开头,“Jame”也是“James”的开头
我想搜索字符串name
中的每个单词,如果它以输入值中的每个单词开头,类似这样
var name = "John Peter James";
inputValue = "Pe Jame"; //returns true
inputValue = "Pes James"; // returns false
inputValue = "John"; //returns true
inputValue = "Joh Pete Ja"; //returns true
inputValue = "Jon Peter James"; // returns false
inputValue = "John John"//returns false
您需要使用分割方法来制作这些单独的零件
var myString = "pe jame";
var result = myString.split(" ");
spit中的参数是分隔符
function stringSplit() {
var name = "john peter james";
var myString = "pe jame";
var result = myString.split(" ");
var nameSplit = name.split(" ");
var isTrue = false;
for (var q = 0; q < result.length; q++) {
for (var i = 0; i < nameSplit.length; i++) {
if (nameSplit[i].startsWith(result[q])) {
isTrue = true;
break;
}
else {
isTrue = false;
}
}
}
}
函数stringSplit(){
var name=“约翰·彼得·詹姆斯”;
var myString=“pe jame”;
var result=myString.split(“”);
var nameSplit=name.split(“”);
var isTrue=假;
对于(var q=0;q
这不是完美的,但我确实认为它很接近,很抱歉回复太晚。这需要一些思考。您将希望使用拆分方法来制作这些单独的零件
var myString = "pe jame";
var result = myString.split(" ");
spit中的参数是分隔符
function stringSplit() {
var name = "john peter james";
var myString = "pe jame";
var result = myString.split(" ");
var nameSplit = name.split(" ");
var isTrue = false;
for (var q = 0; q < result.length; q++) {
for (var i = 0; i < nameSplit.length; i++) {
if (nameSplit[i].startsWith(result[q])) {
isTrue = true;
break;
}
else {
isTrue = false;
}
}
}
}
函数stringSplit(){
var name=“约翰·彼得·詹姆斯”;
var myString=“pe jame”;
var result=myString.split(“”);
var nameSplit=name.split(“”);
var isTrue=假;
对于(var q=0;q
这不是完美的,但我确实认为它很接近,很抱歉回复太晚,这需要一些思考。只需写下你的意思,即输入的每一部分都有一个名称部分的前缀
input.split(' ').every(isPrefixInName)
哎呀,现在我们必须写isPrefixInName
。输入的一部分是name
中的前缀(如果有)
一些以输入的该部分开头的单词
function isInInput(inputPart) {
return name.split(' ').some(namePart => namePart.startsWith(inputPart));
}
只要写下你的意思,也就是说,输入的每一部分都有名称某一部分的前缀
input.split(' ').every(isPrefixInName)
哎呀,现在我们必须写isPrefixInName
。输入的一部分是name
中的前缀(如果有)
一些以输入的该部分开头的单词
function isInInput(inputPart) {
return name.split(' ').some(namePart => namePart.startsWith(inputPart));
}
用这个
newInputValue = inputValue.split(' ');
newName = name.split(' ');
for(var i = 0; i < newInputValue.length; i++){
newValue = newInputValue[i];
for(var x = 0; x < newName.length; x++){
eachName = newName[x];
if(eachName.startsWith(newValue))
return true;
else
return false;
}
}
newInputValue=inputValue.split(“”);
newName=name.split(“”);
对于(变量i=0;i
使用此
newInputValue = inputValue.split(' ');
newName = name.split(' ');
for(var i = 0; i < newInputValue.length; i++){
newValue = newInputValue[i];
for(var x = 0; x < newName.length; x++){
eachName = newName[x];
if(eachName.startsWith(newValue))
return true;
else
return false;
}
}
newInputValue=inputValue.split(“”);
newName=name.split(“”);
对于(变量i=0;i
您也可以使用正则表达式。这将帮助您忽略区分大小写
var arr=[“pejame”、“Pes James”、“Jon”、“Joh Pete Ja”、“Jon Peter James”、“John Jon”];
函数searchValues(){
var search=document.getElementById('txtSearch').value;
var r=new RegExp(search.replace(//g,“|”),“i”);
document.getElementById('result').innerHTML=JSON.stringify(arr.filter(x=>r.test(x)),null,4)
}
搜寻
您也可以使用正则表达式。这将帮助您忽略区分大小写
var arr=[“pejame”、“Pes James”、“Jon”、“Joh Pete Ja”、“Jon Peter James”、“John Jon”];
函数searchValues(){
var search=document.getElementById('txtSearch').value;
var r=new RegExp(search.replace(//g,“|”),“i”);
document.getElementById('result').innerHTML=JSON.stringify(arr.filter(x=>r.test(x)),null,4)
}
搜寻
正如其他人所说,我们可以使用RegExp来实现这一点
简单的正则表达式应该是
/^您在这里的输入。*/
正如其他人所说的,我们可以使用RegExp来实现这一点
简单的正则表达式应该是
/^您在这里的输入。*/
那么我下一步该怎么办?@torazaburo为answer添加了可能的解决方案那么我下一步该怎么办?@torazaburo为answer添加了可能的解决方案我猜您在函数中有一些语法错误,请尝试修复它好吗?@theking很抱歉,修正了。但我总是得到一个假的,即使它是真的。我这样做了found=username.split(“”).every(IsInInput)代码>console.log(已找到)
我会在有机会的时候再讨论这个问题,但与此同时,尝试自己调试它可能会很有教育意义。我猜你在函数中有一些语法错误,请你尝试修复它好吗?@国王很抱歉,修复了。但我总是得到一个false,即使它是真的。我这样做了found=username.split(“”).every(IsInInput)代码>console.log(已找到)代码>我会在有机会的时候再讨论这个问题,但与此同时,尝试自己调试它可能是有教育意义的。我认为这不管用。对于“Pe Jame”,它返回false
,而应该返回true。在第一次迭代之后,您将退出循环。我认为这不起作用。对于“Pe Jame”,它返回false
,而应该返回true。在第一次迭代后,您将退出循环。如果字符串名称中的每个单词都以输入值中的每个单词开头,我将搜索它。根据你的例子,你似乎说错了。您似乎想说我想检查输入中的每个单词是否都是name
中某个单词的开头。我想搜索字符串名称中的每个单词,如果它以输入值中的每个单词开头。你好像说错了,巴斯