我正在尝试匹配另一个字符串中的字符串,但我无法做到:
我想根据我正在键入的另一个字符串匹配一个字符串,但是当我"询问"阿斯顿马丁"是否以"阿斯顿"开头时,我得到"false"。
编辑:
请注意,过滤器是"键入时",在这种情况下,我在"阿斯顿"的末尾有一个空格。
重要提示:
根据@mplungjan答案,我遇到了另一个关于过滤器字符串末尾空格的问题。测试它,我得到了 charCode 160,所以我使用的解决方案是将替换应用于两个字符串:
.replace(String.fromCharCode(160), ' ')
var value = $("#brand").text();
var brand = $("#filter").val();
alert(brand.substr(0, value.length).toUpperCase() == value.toUpperCase());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div id="brand">Aston Martin</div>
<input id="filter" value="Aston ">
使用 indexOf == 0 将显示以品牌开头的字符串,包括值中的空格!
var brand = $("#brand").text();
var value = $("#filter").val();
console.log(">"+brand+"<",">"+value+"<",brand.toUpperCase().indexOf(value.toUpperCase())==0);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div id="brand">Aston Martin</div>
<input id="filter" value="Aston ">
Onkeyup:
$("#filter").on("keyup", function() {
var brand = $("#brand").text();
brand = brand?brand.toUpperCase():"";
var value = $("#filter").val();
value = value?value.toUpperCase():"";
if (brand && value) {
console.log(brand, value,brand.indexOf(value) == 0); // same as regex /^word /
}
else {
console.log("Something is empty");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div id="brand">Aston Martin</div>
<input id="filter" value="Aston ">
这将起作用,并且不要忘记输入的值中有一个空格?
var value = $("#brand").text();
var brand = $("#filter").val();
alert(!!value.toUpperCase().match(brand.toUpperCase()));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div id="brand">Aston Martin</div>
<input id="filter" value="Aston ">
你可以这样尝试:
x = "Aston Martin";
if (x.match("Aston")) {
// Code
}
更新1:
如果您希望字符串以特定单词开头,并且希望在末尾匹配空格,则可以这样做:
if(x.match(/^Aston /)) {
}
请使用这个:
value.toUpperCase().indexOf(brand.toUpperCase())>=0?true:false