我有以下字符串:
var a = "vm.model.password";
var b = "vm.model.passwordCheck";
我有以下内容:
var sa = "Password";
var sb = "PasswordCheck";
我需要检查a中是否包含sa和b中的sb。
所以为了比较我需要检查点后的a或b中的字符串。 并检查sa是否等于该字符串,但首先将sa的第一个字母设为小写。
我做的事情是:
a.indexOf(sa.toLowerCase()) > -1;
但问题是sa会与b匹配,而sb不会与b匹配,因为它以P而不是p开头。
这样做的最佳方式是什么?
答案 0 :(得分:3)
至于获得最后一句话:
如何使用str.lastIndexOf('.')
比split()快得多:
var a = "vm.model.password";
var b = "vm.model.passwordCheck";
console.log(a.slice(a.lastIndexOf('.') + 1))
// a .toLowerCase at the end should do it
JSbin:https://jsbin.com/komowi/edit?js,console
鉴于你是如何遇到大写/小写字母的问题,可能是时候查看一个RegExp,它上面有一个'i'标志,这意味着它将与案例MDN RegExp匹配 这不是每个人都需要的,但肯定会有所帮助
答案 1 :(得分:1)
如果要检查的单词总是在最后,你可以这样做。
var aArray = a.split(".");
sa.toLowerCase() === aArray[aArray.length-1].toLowerCase();
答案 2 :(得分:1)
使用pop()可以得到数组的最后一个元素。
if( sa.toLowerCase() == a.split(".").pop() ){
//your code here
}
答案 3 :(得分:1)
像...一样的东西。
var a = "vm.model.password";
var b = "vm.model.passwordCheck";
var sa = "Password";
var sb = "PasswordCheck";
var endA = a.substring(a.lastIndexOf('.') + 1).toLowerCase();
var endB = b.substring(a.lastIndexOf('.') + 1).toLowerCase();
if (endA.includes(sa.toLowerCase())) {
alert("A match");
}
if (endB.includes(sb.toLowerCase())) {
alert("B match");
}
显然,你应该检查它是否包含'。'或者lastIndexOf结果是> = 0等,但我为了简单起见避免了这种验证。
答案 4 :(得分:1)
这个怎么样:
a.toLowerCase().split('.').pop() === sa.toLowerCase()
b.toLowerCase().split('.').pop() === sb.toLowerCase()