JSはかっこが合っているかどうかを判断します.
16323 ワード
まず*大文字のZDQ**ブロガーに対する感謝、霊感はここから来ました.
かっこが合うかどうかを判断する–JavaScript
与えられた文字列から、文字列の中の括弧()[]{}が規則的に対応しているかどうかを判断します.
考え方
括弧は必ず対になって現れます.文字列の中で出会った括弧は、その前の括弧とペアになります.
説明
マッチが正しい場合は、-1を返します.マッチが間違っている場合は、インデックス値を返します.
単純な判断ならブール値に変えてもいいです.
互換性のある書き方
IEが互換性がないのは、主にES 6の文法が使われているからです.
https://blog.csdn.net/u010712012/article/details/83856371
かっこが合うかどうかを判断する–JavaScript
与えられた文字列から、文字列の中の括弧()[]{}が規則的に対応しているかどうかを判断します.
考え方
括弧は必ず対になって現れます.文字列の中で出会った括弧は、その前の括弧とペアになります.
説明
マッチが正しい場合は、-1を返します.マッチが間違っている場合は、インデックス値を返します.
単純な判断ならブール値に変えてもいいです.
互換性のある書き方
function isValid(str){
if(!str.trim()) return -1;
var stack = [];
var keys = [')',']','}'];
var values = ['(','[','{'];
var isBreak = -1;
for(var i=0;i<str.length;i++){
var char = str.charAt(i);
if(values.includes(char)){
//
stack.push(char);
}else{
var index = keys.indexOf(char);
if(index > -1){
//
if(!stack.length || values[index] != stack.pop()){
isBreak = i;
break;
}
}
}
}
if(isBreak > -1){
return isBreak
}
return stack.length - 1
}
簡単な書き方IEが互換性がないのは、主にES 6の文法が使われているからです.
function isValid(str){
if(!str.trim()) return -1;
var stack = [];
var dict = {"]": "[", "}": "{", ")": "("};
var values = Object.values(dict);
var isBreak = -1;
for(var i=0;i<str.length;i++){
var char = str.charAt(i);
if(values.includes(char)){
stack.push(char);
}else if(dict[char]){
if(!stack.length || dict[char] != stack.pop()){
isBreak = i;
break;
}
}
}
if(isBreak > -1){
return isBreak
}
return stack.length - 1
}
検証document.write('() : '+isValid('()'));
document.write('
');
document.write('()[]{} : '+isValid('()[]{}'));
document.write('
');
document.write('(] : '+isValid('(]'));
document.write('
');
document.write('([)] : '+isValid('([)]'));
document.write('
');
document.write('{[]} : '+isValid('{[]}'));
document.write('
');
document.write('(()()) : '+isValid('(()())'));
document.write('
');
document.write('((() : '+isValid('((()'));
参考:https://blog.csdn.net/u010712012/article/details/83856371