gpt4 book ai didi

javascript - 拆分文本以每 n 个字符添加一个新行,注意空格

转载 作者:行者123 更新时间:2023-12-01 15:45:20 35 4
gpt4 key购买 nike

为警报和确认对话框编写文本时的常见问题:在添加换行符之前要输入的字符数。有些浏览器会在某一时刻自动中断,而另一些则在其他时刻自动中断。所以你只能猜测。有用的片段是一个 Javascript 函数,它将警报或确认对话框的预期文本和字符长度作为输入,然后返回相同的输入字符串,仅在空格最接近传入字符长度的位置添加新行字符。这样,单词不会中途分解。

例子:
1. 将 var 分配给要用于警报或确认对话框的文本字符串,例如:
var a = "我的狗有跳蚤,快速棕色狐狸跳过懒狗等";
2.通过函数运行文本,例如:
a = 断线(a);//默认,每 50 个字符中断一次
或者
a = breakLines(a, 20);//每 20 个字符中断一次

在通过函数运行它后显示'a'的值,你会看到在你指定的每个位置都添加了换行符,在最接近你指定的字符位置的空格字符处。例如,如果您指定 20,则“a”将转换为以下内容:

'我的狗有跳蚤\n敏捷的棕色狐狸\n跳过懒惰的\n狗等'

对于字符串中的每一行(一行是以换行符结尾的字符串的一部分),该行的两边都被 trim 掉空白。下面的代码片段使用 jQuery $.trim() 函数来执行此操作,但还有其他方法可以在不使用 jQuery 库的情况下执行此操作,例如使用正则表达式。只需根据您的需要修改代码以使用替代方法。

这引出了我的问题:除了按照如下所示的方式做我想做的事情之外,是否有一种更简单、更紧凑的方法,例如可以利用正则表达式的方法?有接盘侠吗?

function breakLines(text, linelength)
{
var linebreak = '\n';
var counter = 0;
var line = '';
var returntext = '';
var bMatchFound = false;
var linelen = 50; // 50 characters per line is default

if(linelength)
{
linelen = linelength;
}

if(!text){ return '';}
if(text.length < linelen+1) { return $.trim(text);}

while(counter < text.length)
{
line = text.substr(counter,linelen);
bMatchFound = false;
if (line.length == linelen)
{
for(var i=line.length;i > -1;i--)
{
if(line.substr(i,1)==' ')
{
counter += line.substr(0,i).length;
line = $.trim(line.substr(0,i)) + linebreak;
returntext += line;
bMatchFound = true;
break;
}
}

if(!bMatchFound)
{
counter+=line.length;
line = $.trim(line) + linebreak;
returntext += line;
}
}
else
{
returntext += $.trim(line);
break; // We're breaking out of the the while(), not the for()
}
}

return returntext;
}

最佳答案

没有参数验证的简短版本

function explode(str, maxLength) {
var buff = "";
var numOfLines = Math.floor(str.length/maxLength);
for(var i = 0; i<numOfLines+1; i++) {
buff += str.substr(i*maxLength, maxLength); if(i !== numOfLines) { buff += "\n"; }
}
return buff;
}

关于javascript - 拆分文本以每 n 个字符添加一个新行,注意空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12426118/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com