我正在尝试为以下测试找到解决方案: 您应该能够在给定的列数处换行,而不会中断单词
输入字符串是:
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。
任何指针?
谢谢。
答案似乎是:
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/
| 归档时间: |
|
| 查看次数: |
4719 次 |
| 最近记录: |