我正在对字符串对进行一些条件连接。如果不满足条件,则应在两者之间添加空格 以下是我的较大代码的一小部分,但复制了我的问题
a = "ai";
b = "b";
res = "";
if (a.match(/ai$/))
{
if (b.match(/^ā/) || b.match(/^a/) ||
b.match(/^i/) || b.match(/^ī/) ||
b.match(/^u/) || b.match(/^ū/) ||
b.match(/^e/) || b.match(/^o/) ||
b.match(/^ṛ/))
{
res = a.slice(0, -1) + 'a ' + b
}
}
else
res = a+ ' ' + b
结果应为ai b
但是我得到了''
我做错了什么?
答案 0 :(得分:2)
将else
移到第一个if
内,以便在不满足内部else
时触发if
:
a = "ai";
b = "b";
res = "";
if (a.match(/ai$/))
{
if (b.match(/^ā/) || b.match(/^a/) ||
b.match(/^i/) || b.match(/^ī/) ||
b.match(/^u/) || b.match(/^ū/) ||
b.match(/^e/) || b.match(/^o/) ||
b.match(/^ṛ/))
{
res = a.slice(0, -1) + 'a ' + b
}
else{
res = a+ ' ' + b
}
}
console.log(res);

答案 1 :(得分:1)
嵌套的if不会转到其他地方,例如:
if (1 === 1) {
if (1 === 2) {
console.log(1);
}
}
else {
console.log(2);
}
在这种情况下,else语句永远不会触发。
在我看来,你需要做的只是组合if语句:
a = "ai";
b = "b";
res = "";
if (a.match(/ai$/) && (b.match(/^ā/) || b.match(/^a/) ||
b.match(/^i/) || b.match(/^ī/) ||
b.match(/^u/) || b.match(/^ū/) ||
b.match(/^e/) || b.match(/^o/) ||
b.match(/^ṛ/))) {
res = a.slice(0, -1) + 'a ' + b;
}
else {
res = a + ' ' + b;
}
请注意额外的"("&&&&&&&&&&&&&&&&&&&&&&&amp