Как автоматически закрывать круглые скобки при вводе JavaScript: методы и примеры кода

Чтобы автоматически закрывать круглые скобки при вводе 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!")