在javascript中将字符串拆分为多行

时间:2018-09-18 23:20:06

标签: javascript string

我正在尝试找到一种将长字符串拆分为多行的方法,所以我正在做的是将文本插入图像,如果时间太长则会溢出,换行就可以了,但这并不是最好的主意让用户添加换行符并在代码中拆分它,因此,如果我给它一个限制,它会检查其超限是否拆分为两行,或者我的意思是换行符之间是\ n,但是这很容易,但是我的问题是第二部分也超出了限制,则应将其分成3个换行符,您将如何实现呢?

示例

split("sometext", 5); // somet\next
split("Hello", 2); // he\nll\no

4 个答案:

答案 0 :(得分:1)

https://j11y.io/snippets/wordwrap-for-javascript/

使用指定的字符限制进行换行。 :)

答案 1 :(得分:1)

非常简单的答案:

function customSplit(str, maxLength){
    if(str.length <= maxLength)
        return str;
    var reg = new RegExp(".{1," + maxLength + "}","g");
    var parts = str.match(reg);
    return parts.join('\n');
}

答案 2 :(得分:0)

您要建立什么样的界面?如果是Web界面,则应在前端设置字符串样式,而不是在数据层上进行修改。

如果这是一个基于文本的界面,并且您确实需要执行此操作,则可以在有非空字符串的情况下获取前n个字符,然后以'\ n'开头。假设您有下划线:

function split(str, n) {
  let numberOfSegments = Math.ceil(_.size(str) / n);
  let segments = _.map(_.range(numberOfSegments), 
                       segmentIndex => str.substr(segmentIndex * n, n));
  return segments.join('\n');
}

答案 3 :(得分:0)

您需要类似以下的功能:

function split(str, maxWidth) {
  const newLineStr = "\n";
  done = false;
  res = '';
  do {
    found = false;
    // Inserts new line at first whitespace of the line
    for (i = maxWidth - 1; i >= 0; i--) {
      if (testWhite(str.charAt(i))) {
        res = res + [str.slice(0, i), newLineStr].join('');
        str = str.slice(i + 1);
        found = true;
        break;
      }
    }
    // Inserts new line at maxWidth position, the word is too long to wrap
    if (!found) {
      res += [str.slice(0, maxWidth), newLineStr].join('');
      str = str.slice(maxWidth);
    }

    if (str.length < maxWidth)
      done = true;
  } while (!done);

  return res + str;
}

function testWhite(x) {
  const white = new RegExp(/^\s$/);
  return white.test(x.charAt(0));
};
console.log(split("sometext", 5));
console.log(split("Hello", 2));