在编写警告和确认对话框文本时常见问题是在添加换行符之前需要键入的字符数。一些浏览器在一个点自动断开,另一些则在其他位置断开。因此,您需要猜测。有用的片段是一个Javascript函数,它以alert或confirm对话框的预期文本和字符长度作为输入,然后返回相同的输入字符串,其中仅在最接近所传递的字符长度的空间处添加了新行字符。这样,单词不会在中途被分开。
例如: 1. 分配一个变量给要用于警告或确认对话框的文本字符串,例如:var a =“My dog has fleas the quick brown fox jumps over the lazy dog etc”; 2. 运行该文本通过函数,例如:a = breakLines(a); //默认情况下,在每50个字符后换行或a = breakLines(a, 20); //每20个字符换行
运行函数后显示'a'的值,您将看到已在与指定字符位置最接近的空格处添加了换行符。例如如果您指定了20,则'a'将转换为以下内容:
'My dog has fleas\nthe quick brown fox\njumps over the lazy\ndog etc'
对于字符串中的每一行(行是以新行字符结尾的字符串部分),都会去掉两侧的空白。下面的代码片段使用jQuery $.trim()函数来执行此操作,但是还有其他方法可以在不使用jQuery库的情况下执行此操作,例如使用正则表达式。只需根据需要修改代码以使用其他手段。
这引导我提出了问题:除了按照所示的方式执行我想要执行的操作之外,是否有更简单、更紧凑的方法可以执行它,例如可以利用正则表达式吗? 有人愿意试试吗?
例如: 1. 分配一个变量给要用于警告或确认对话框的文本字符串,例如:var a =“My dog has fleas the quick brown fox jumps over the lazy dog etc”; 2. 运行该文本通过函数,例如:a = breakLines(a); //默认情况下,在每50个字符后换行或a = breakLines(a, 20); //每20个字符换行
运行函数后显示'a'的值,您将看到已在与指定字符位置最接近的空格处添加了换行符。例如如果您指定了20,则'a'将转换为以下内容:
'My dog has fleas\nthe quick brown fox\njumps over the lazy\ndog etc'
对于字符串中的每一行(行是以新行字符结尾的字符串部分),都会去掉两侧的空白。下面的代码片段使用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;
}