регулярное выражение javascript заменяет 1-й и 3-й пробел в строке - PullRequest
0 голосов
/ 08 октября 2019

У меня есть 2 типа строк. Один из них имеет только 1 пробел, а второй - 3 пробела.

  • V1: "100 s" => 1 пробел. Номер, за которым следует буква. Число может быть 1..n цифр.
  • V2: "2 W 10 h" => 3 пробела. Каждый номер сопровождается буквой. Снова числа могут быть 2..n цифрами.

Мне нужно избавиться от пробелов после чисел. Таким образом, конечные результаты должны быть такими:

  • V1: "100 s" -> "100s"
  • V2: "2 W 10 h" -> "2W 10h"

Сейчас я использую функцию разделения JavaScript. Однако мне нужно регулярное выражение для замены более эффективным способом. Не могли бы вы помочь мне с этим? Благодарю.

const getDelayValue = delayString => {
    const splitted = delayString.split(/\s+/);
    if (splitted) {
        if (splitted.length === 2) {
            return `${splitted[0]}${splitted[1]}`;
        }
        return `${splitted[0]}${splitted[1]} ${splitted[2]}${splitted[3]}`;
    }
    return delayString;
}

Ответы [ 2 ]

3 голосов
/ 08 октября 2019

Просто замените numbers space string на numbers string:

str = `
100 s
2 W 10 h
`

console.log(
  str.replace(/(\d+)\s+([a-z]+)/gi, "$1$2")
)

См. здесь значение $1 в замене.

2 голосов
/ 08 октября 2019

Вы можете использовать регулярные выражения для удаления пробелов

const str1 = '100   s';
const str2 = '2 W 10 h';

function removeSpace(str) {
  // as @ Keith pointed out, you can also use :
  // return str.replace(/(\d+) +/g, '$1');
  // \d is a shortcut for [0-9]

  return str.replace(/([0-9]+) +/g, '$1');
}

console.log(removeSpace(str1));
console.log(removeSpace(str2));

Мы сопоставляем число с пробелом. А затем замените его только номером. Для создания и тестирования вашего регулярного выражения вы можете использовать веб-сайт https://regex101.com/

enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...