在字符串中指定数量的数字后插入空格



我得到了一个数组,里面有很多格式化不好的字符串。我需要添加一个空格到字符串后的前三个数字与JavaScript字符串. 主要的问题是,我没有一个特定的索引来插入空格,因为前三个数字之前的字符数变化或根本不存在。

输入例子:

[
"A12345678",
"ABC12345678",
"1234 56 7 8",
"12 345 67 8",
"AB12345678BVC",
]

所需输出:

[
"A123 45678",
"ABC123 45678",
"123 45678",
"123 45678",
"AB123 45678BVC",
]

我认为可以用replaceAll空间来解决,以获得一个完整的字符串,然后在每个字符串的每个字符上做一个for loop,然后通过类型检查字符来解决这个问题,以便在所需的位置添加一个空格,但是我从后端得到了大量的这些数组,它可能以这种方式以糟糕的性能告终。

我得到的另一个想法是通过使用Regex来解决这个问题,就像这个教程中的例子一样,但不幸的是,我不擅长写Regex。如果有人能帮我解决这个问题,我将非常感激。

您可以使用String.replace()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; }

使用

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}(?!$)/, '$& '));
}

  • 先删除空白,再删除
  • 如果前3位数字不在字符串的末尾,则在前3位数字后面添加空格。

最新更新