我正在尝试找到一种将长字符串拆分为多行的方法,所以我正在做的是将文本插入图像,如果时间太长则会溢出,换行就可以了,但这并不是最好的主意让用户添加换行符并在代码中拆分它,因此,如果我给它一个限制,它会检查其超限是否拆分为两行,或者我的意思是换行符之间是\ n,但是这很容易,但是我的问题是第二部分也超出了限制,则应将其分成3个换行符,您将如何实现呢?
示例
split("sometext", 5); // somet\next
split("Hello", 2); // he\nll\no
答案 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));