Чтобы автоматически закрывать круглые скобки при вводе JavaScript, вы можете использовать различные методы. Вот несколько примеров:
Метод 1: регулярное выражение
function autocloseParentheses(input) {
const openParenthesesCount = (input.match(/\(/g) || []).length;
const closeParenthesesCount = (input.match(/\)/g) || []).length;
const parenthesesToClose = openParenthesesCount - closeParenthesesCount;
const closedParentheses = ')'.repeat(parenthesesToClose);
return input + closedParentheses;
}
const input = 'console.log("Hello, World!"';
const autoclosedInput = autocloseParentheses(input);
console.log(autoclosedInput); // Output: console.log("Hello, World!")
Метод 2: стек
function autocloseParentheses(input) {
const stack = [];
let result = input;
for (let i = 0; i < input.length; i++) {
if (input[i] === '(') {
stack.push(i);
} else if (input[i] === ')') {
if (stack.length === 0) {
result += ')';
} else {
stack.pop();
}
}
}
while (stack.length > 0) {
result += ')';
stack.pop();
}
return result;
}
const input = 'console.log("Hello, World!"';
const autoclosedInput = autocloseParentheses(input);
console.log(autoclosedInput); // Output: console.log("Hello, World!")
Метод 3: анализ
function autocloseParentheses(input) {
const stack = [];
let result = input;
for (let i = 0; i < input.length; i++) {
if (input[i] === '(') {
stack.push('(');
} else if (input[i] === ')') {
if (stack.length === 0 || stack[stack.length - 1] !== '(') {
result = result.slice(0, i) + ')' + result.slice(i);
} else {
stack.pop();
}
}
}
while (stack.length > 0) {
result += ')';
stack.pop();
}
return result;
}
const input = 'console.log("Hello, World!"';
const autoclosedInput = autocloseParentheses(input);
console.log(autoclosedInput); // Output: console.log("Hello, World!")