重塑字符串,每N个字符插入“\ n”

时间:2018-02-23 20:02:22

标签: javascript regex string

使用JavaScript函数,我试图在用户提供的每N个字符的字符串上插入一个断行符。

就像这样:function("blabla", 3) would output "bla\nbla\n".

我搜索了很多答案并最终得到了一个正则表达式,唯一的问题是,我需要用户对此事的输入,所以我需要在这个正则表达式上插入一个变量。

以下是代码:

function reshapeString(string, num) {
    var regex = new RegExp("/(.{" + num + "})/g");
    return string.replace(regex,"$1\n");
}

reshapeString("blablabla", 3);

目前无效。我试图逃避'/'字符,但我在某个时候搞砸了,我不知道在哪里。

我错过了什么?有没有其他方法可以解决重塑此字符串的问题?

2 个答案:

答案 0 :(得分:4)

你需要一个regexp构造函数的字符串,没有/,你可以通过$&找到找到的字符串来省略该组。



function reshapeString(string, num) {
    var regex = new RegExp(".{" + num + "}", "g");
    return string.replace(regex,"$&\n");
}

console.log(reshapeString("blablabla", 3));




答案 1 :(得分:0)

字符串是不可变的,所以无论你做什么,你都必须创建一个新的字符串。最好先开始创建它。



var newLineForEach = (n,s) => s && `${s.slice(0,n)}\n${newLineForEach(n,s.slice(n))}`,
    result = newLineForEach(3,"blablabla");
console.log(result);




所以我的测试显示这是迄今为止最快的。 100K迭代导致Nina的1260毫秒,AP的103毫秒和减少33毫秒。接受的答案非常低效。