为每x个字符创建一个换行符

时间:2018-08-05 20:54:14

标签: javascript node.js

说我有一个具有x个字符的任意字符串。如何在每个y个字符的字符串中插入换行符?我只想包装字符串,这样:

xageaojigeaogjieaogjieaogjoajgoeajgoeagjaegaogjeaovc

成为

xageaoj
igeaogj
ieaogji
eaogjoa
jgoeajg
oeagjae
gaogjea
ovc

如果换行计数为7,一种方法是遍历字符串,然后推入数组,如下所示:

const wrap = (count, str) => {
  const letters = [], ln = str.length;

  for(let i = 0; i < ln; i++){
    letters.push(str[i]);
    if(i%count === 0)
    letters.push('\n');
  }

  return letters.join('');
};

但是有更好/更简单的方法吗?

4 个答案:

答案 0 :(得分:2)

您可以使用正则表达式.replace

const input = 'xageaojigeaogjieaogjieaogjoajgoeajgoeagjaegaogjeaovc';
console.log(input.replace(/.{8}/g, '$&\n'));

这是什么,每8个字符被匹配(用.{8}),然后第二个参数中的'$&'表示匹配的整个子字符串。因此,只需将\n附加到末尾,每8个字符将被这8个字符和换行符替换。您还可以像这样插入匹配的 groups ,请参见the docs

答案 1 :(得分:1)

另一种方法可能是将String#slice与指示符用于下一个切片索引。

const wrap = (str, count) => {
    var letters = [],
        i = 0;

    while (i < str.length) {
        letters.push(str.slice(i,  i+= count));
    }
    return letters.join('\n');
};

console.log(wrap('xageaojigeaogjieaogjieaogjoajgoeajgoeagjaegaogjeaovc', 7));

答案 2 :(得分:1)

您可以使用正则表达式来匹配7个字符,并将其替换为匹配项,然后再换行

str.replace(/(.{7})/g, "$1\n")

或在您的代码中

const wrap = (str, count) =>
    str.replace(new RegExp(`(.{${count}})`, "g"), "$1\n")

答案 3 :(得分:1)

RegExp + Array.prototype.join版本:

const wrap = (raw, n) => raw.match(new RegExp(`.{1,${n}}`, 'g')).join('\n')

const source = 'xageaojigeaogjieaogjieaogjoajgoeajgoeagjaegaogjeaovc'

console.log(wrap(source, 7))