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, '$& '));
【讨论】:
我能问一下+
在你的正则表达式中的作用吗?我将其解释为“采取行动”(.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个位置删除元