#javascript #regex
Вопрос:
Я получил массив с большим количеством строк, которые плохо отформатированы. Мне нужно добавить пробел в строку после первых трех чисел в строке с помощью JavaScript. Основная проблема заключается в том, что у меня нет определенного индекса для вставки пробела, потому что количество символов перед первыми тремя числами различается или вообще не существует.
Пример ввода:
[
"A12345678",
"ABC12345678",
"1234 56 7 8",
"12 345 67 8",
"AB12345678BVC",
]
Желаемый результат:
[
"A123 45678",
"ABC123 45678",
"123 45678",
"123 45678",
"AB123 45678BVC",
]
Я думал, что это может быть решаемо с помощью replaceAll
пробелов, чтобы получить непрерывную строку, а затем выполнить a for loop
над каждым символом в строке, а затем решить это путем проверки типов символов, чтобы добавить пробел в нужную позицию, но я получаю огромное количество этих массивов из серверной части, и это может закончиться ужаснымпроизводительность таким образом.
Другая идея, которую я получил, — решить это с помощью регулярных выражений, как в этом примере из учебника, но, к сожалению, я не умею писать регулярные выражения. Я был бы очень признателен, если кто-нибудь сможет мне в этом помочь.
Комментарии:
1. пожалуйста, поделитесь тем, что вы пробовали
Ответ №1:
Вы можете использовать String.replace()
along with Array.map()
для добавления требуемого пробела. Прежде всего, мы удаляем все пробелы из каждой строки, затем добавляем пробел в требуемую позицию.
const input = [
"A12345678",
"ABC12345678",
"1234 56 7 8",
"12 345 67 8",
"AB12345678BVC",
]
const result = input.map(v => v.replace(/s/g,'').replace(/(d{3})/, '$1 '));
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Ответ №2:
Использование
const texts = [
"A12345678",
"ABC12345678",
"1234 56 7 8",
"12 345 67 8",
"AB12345678BVC"
]
for (const text of texts) {
console.log(text, '->', text.replace(/s /g,'').replace(/d{3}(?!$)/, '$amp; '));
}
Т.е.
- Сначала удалите пробелы, затем
- Добавьте пробел после первых 3 цифр, если эти цифры не находятся в конце строки.