Javascript在字符串的第n个位置插入空格

Posted

技术标签:

【中文标题】Javascript在字符串的第n个位置插入空格【英文标题】:Javascript insert space at nth position in string 【发布时间】:2020-08-27 14:19:14 【问题描述】:

假设我有以下字符串:“***”,我想在每三个数字之间插入一个空格,如下所示:“S tac kov erf low”从末尾开始。这可以用正则表达式完成吗?

我现在用 for 循环通过以下方式完成了它:

var splitChars = (inputString: string) => 
    let ret = [];
    let counter = 0;
    for(let i = inputString.length; i >= 0;  i --) 
       if(counter < 4) ret.unshift(inputString.charAt(i));
       if(counter > 3)
        ret.unshift(" ");
        counter = 0;
        ret.unshift(inputString.charAt(i));
        counter ++;
        
       counter ++;
    
    return ret;

我可以通过某种方式缩短它吗?

【问题讨论】:

【参考方案1】:

您可以积极向前看并添加空格。

console.log("***".replace(/.1,3(?=(.3)+$)/g, '$&amp; '));

【讨论】:

我能问一下+ 在你的正则表达式中的作用吗?我将其解释为“采取行动”(.3)。如果是这样,我认为 (.3)+ 的意思是“寻找”..................(基本上是 . 的 3 倍数)。 是的,它是后面字符的量词,直到字符串结束。 谢谢。我花了一段时间才得到它,因为我们正在“向后”工作! IE。如果工作是在每三个字符(从左到右)之后放置一个空格,那会更容易,对吧?【参考方案2】:

您可以使用正则表达式将其分块,然后用字符串将其重新连接在一起。

var string = "***";
var chunk_size = 3;
var insert = ' ';

// Reverse it so you can start at the end
string = string.split('').reverse().join('');

// Create a regex to split the string
const regex = new RegExp('.1,' + chunk_size + '', 'g');

// Chunk up the string and rejoin it
string = string.match(regex).join(insert);

// Reverse it again
string = string.split('').reverse().join('');

console.log(string);

【讨论】:

【参考方案3】:

这是一个没有正则表达式的解决方案,带有 for...of

<!DOCTYPE html>
<html>
<body>

<script>
const x="***",result=[];
let remaind = x.length %3 , ind=0 , val;

for(const i of x)
val = (++ind % 3 === remaind) ? i+" " : i; 
result.push(val); 


console.log(result.join(''));
</script>

</body>
</html>

【讨论】:

以上是关于Javascript在字符串的第n个位置插入空格的主要内容,如果未能解决你的问题,请参考以下文章

建立一个含10个元素的顺序线性表 然后在第i个位置插入元素M 再在第j个位置删除元

Erase Subsequences

Nowcoder 上海五校赛Wasserstein Distance

如何在顺序线性表中第i个位置之前插入新的元素e

NYOJ 746---整数划分(区间DP)

ARM Neon:将非零字节的第 n 个位置存储在 8 字节向量通道中