使用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);
目前无效。我试图逃避'/'字符,但我在某个时候搞砸了,我不知道在哪里。
我错过了什么?有没有其他方法可以解决重塑此字符串的问题?
答案 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毫秒。接受的答案非常低效。