Javascript 字符串换行

Cla*_*icu 3 javascript string

我正在尝试为以下测试找到解决方案: 您应该能够在给定的列数处换行,而不会中断单词

输入字符串是:

var inputStrings = [
  'abcdef abcde abc def',
  'abc abc abc',
  'a b c def'
];
Run Code Online (Sandbox Code Playgroud)

并且输出应该是:

var outputStrings = [
  'abcdef\nabcde\nabc\ndef',
  'abc\nabc\nabc',
  'a b c\ndef'
];
Run Code Online (Sandbox Code Playgroud)

我想出了这个 jsfiddle,它通过了 3 个测试中的 2 个:https ://jsfiddle.net/ticuclaudiu/yh269rc0/5/

function wordWrap(str, cols) {
  var formatedString = '', 
        wordsArray = [];


    wordsArray = str.split(' ');

  for(var i = 0; i < wordsArray.length; i++) {

    if(wordsArray.indexOf(wordsArray[i]) === 0) {
        formatedString += wordsArray[i];
    } else {  
        if(wordsArray[i].length > 1) {
            formatedString += '/n' + wordsArray[i];
        } else {
            formatedString +=' ' + wordsArray[i];
        }
    }
  }

  console.log(formatedString);
}

//wordWrap('abcdef abcde abc def', 5);
wordWrap('abc abc abc', 5);
//wordWrap('a b c def', 5);

//'abcdef abcde abc def'    |       'abcdef\nabcde\nabc\ndef',
//'abc abc abc'                     |       'abc\nabc\nabc',        
//'a b c def'                           |       'a b c\ndef'
Run Code Online (Sandbox Code Playgroud)

但我不知道如何通过第二个 ('abc abc abc');

它必须是纯 javascript。

任何指针?

谢谢。

Cla*_*icu 5

答案似乎是:

function wordWrap(str, cols) {
    var formatedString = '',
        wordsArray = [];


    wordsArray = str.split(' ');

    formatedString = wordsArray[0];

    for (var i = 1; i < wordsArray.length; i++) {
        if (wordsArray[i].length > cols) {
            formatedString += '\n' + wordsArray[i];
        } else {
            if (formatedString.length + wordsArray[i].length > cols) {
                formatedString += '\n' + wordsArray[i];
            } else {
                formatedString += ' ' + wordsArray[i];
            }
        }
    }

    console.log(formatedString);
}

wordWrap('abcdef abcde abc def', 5);
wordWrap('abc abc abc', 5);
wordWrap('a b c def', 5);
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到 jsfiddle https://jsfiddle.net/ticuclaudiu/yh269rc0/13/