我有类似的输入
x = "+91458888888"
并与给定的国家/地区代码数组匹配的是y = ["+91","+92","+923","+912"]
输出应为z = "458888888"
和z1 = "+91"
否则为false
,
我不知道继续进行此问题的第一步,任何帮助和建议。谢谢
答案 0 :(得分:1)
如果可能的话,请避免在数组项中使用“ +”号,这将使解决方案更加简便。
第1步:按降序对数组进行排序,这将消除获得部分匹配的机会
第2步:形成正则表达式并进行匹配
第3步:返回结果
var data = [91,92,923,912];
data.sort((a,b)=>b-a);
var match = new RegExp('^\\+('+y.join("|")+')(.*)?$');
var ph = "+95458888888".match(match);
if(ph) {
//return ph[2]
console.log(ph[2]);
} else {
//return false;
}
如果无法更改Array y的结构,则可以使用map方法或通过迭代将数组转换为给定格式。
答案 1 :(得分:0)
尝试以下代码:
for i= 0 to CatPan->ControlCount-1 do CatPan[i].Height;
答案 2 :(得分:0)
尝试一下:
var z;
var y = ["+91","+92","+923","+912"];
var x = "+91458888888";
// Sort based on length
y.sort(function(a, b){
return a.length - b.length;
});
y.forEach(code => {
if(x.indexOf(code) >= 0)
z = x.replace(code , '')
});
console.log(z)
答案 3 :(得分:0)
如果号码长度(没有国家代码)是固定的,则最简单的方法:
let x = "+91458888888";
const result = x.substr(x.length - 9); // '9' was length of the real nubmer
console.log(result);
否则,像其他锚一样使用正则表达式。
答案 4 :(得分:-1)
stackblitz:https://stackblitz.com/edit/angular-modvbu
var data = ["+1684","+92","+923","+912"];
var match = "+168402443432424";
let count=-1;
var finalOutput;
if (data.some(v => { return match.indexOf(v) >= 0; })) {
data.some(v => {
count=count+1;
if(match.indexOf(v) >= 0)
{
finalOutput = match.replace(data[count],'');
return true;
}else{
return false;
}
});
}
console.log(finalOutput);