任何人都知道如何检查if ... else语句中的类似字符串吗?
下面的代码是检查用户是否在自定义受限权限组中,以便我可以在用户界面中创建指标。
if ((myMemberships.indexOf(Sitetitle + " Restricted Readers")>=0) {
oInstance.model.dcn[0]._recordSet[i].isMember=false;
但是我想编写一个数组来存储 Sitetitle +"的不同字符串组合。受限制的读者" ,例如SiteTitle受限读者,SiteTitleRestrictedReader(s),SiteTitle限制读者。因此,我可以阻止管理员在创建组名时输入组名错误,最终导致代码失败。
答案 0 :(得分:2)
我建议使用数组函数Array.some
MDN.您可以执行以下操作:
function isRestrictedReader(member){
return /Restricted\s+Readers/.test(member);
// I'm using a RegExp, but you could use other methods.
// it just has to return a boolean.
}
if (myMemberships.some(isRestrictedReader)){
oInstance.model.dcn[0]._recordSet[i].isMember=false;
}
答案 1 :(得分:1)
如果您不想重构(稍后会详细介绍),您可以使用正则表达式来测试字符串是否与您要查找的模式匹配。
var regex = new RegExp(Sitetitle + "\s*restrict(?:ed)?\s*reader[s]?", "i");
if ((myMemberships.some(function(text){ return text.match(regex) }) {
oInstance.model.dcn[0]._recordSet[i].isMember=false;
这个正则表达式我刚刚根据你的例子汇总在一起,但我确信有人对正则表达式有更多经验可以想出一个更好的表达式。
正如其中一条评论所述,这是处理这类数据的一种非常不安全的方法。对于关键数据,您不能依赖人类可读的字符串。特别是当它受到错别字等事情的影响时,你应该尝试不同的方法。但如果由于某种原因你不能,那就足够了。
答案 2 :(得分:1)
if(/resTrict/i.test('resTrICted') !== false) {
}