Javascript 如何清理空间和新线?
我有以下输出: (这里有很多新行) Lorem Ipsum只是印刷和排版的虚拟文本 工业 Lorem Ipsum一直是业界的标准假人 自从16世纪,一个不知名的打印机 一个铅字的厨房,把它翻成一本铅字样本书 (这里有很多新行) 它不仅存活了五个世纪 而且是向电子排版的飞跃 基本保持不变。它被大众化了 在20世纪60年代,随着包含Lorem的Letraset图纸的发布 同侧节段 为了解决这个问题,我使用了很多正则表达式Javascript 如何清理空间和新线?,javascript,regex,Javascript,Regex,我有以下输出: (这里有很多新行) Lorem Ipsum只是印刷和排版的虚拟文本 工业 Lorem Ipsum一直是业界的标准假人 自从16世纪,一个不知名的打印机 一个铅字的厨房,把它翻成一本铅字样本书 (这里有很多新行) 它不仅存活了五个世纪 而且是向电子排版的飞跃 基本保持不变。它被大众化了 在20世纪60年代,随着包含Lorem的Letraset图纸的发布 同侧节段 为了解决这个问题,我使用了很多正则表达式 var body = contentDiv.replace(/ {2,}/g,
var body = contentDiv.replace(/ {2,}/g, ' ').replace(/([^\r\n][^\n])(?:\r?\n)([^\r\n][^\n])/g,"$1$2");
$('eBody').value = body.replace(/\n{3,}/g, '\n').replace(/^\s\s*/, '');
其中contentDiv
是上面的文本,由getElementsByTagName
返回
var contentDiv = element.getElementsByTagName("div")[0].textContent;
只是div有很多格式(…),当我调用textContent
函数时,我确实会得到带有空格和额外新行的文本,通常它应该是这样的:
Lorem Ipsum只是印刷和排版行业的虚拟文本。自16世纪以来,Lorem Ipsum一直是行业标准的虚拟文本,当时一位不知名的印刷商拿起一个打印工具,将其拼凑成一本打印样本书
它不仅存活了五个世纪,而且还跨越了电子排版,
基本保持不变。它在20世纪60年代随着包含Lorem Ipsum段落的Letraset表的发行而流行
单个正则表达式替换,用于删除前导和尾随空格,并限制连续换行的数量:
str = str.replace(/(\s*((\r?\n){2,})\s*|\s*((\r?\n){1,2})\s*)/g,"$2$4");
转身:
asdfasdf
asdfafd
sdf
d
d sa
sadfdsaf
进入:
只需修复3+多个换行符
.replace(/(\r?\n){3,}/g,"$1$1");
.replace(/^ *| *$/gm,'');
只需修复前导空格和尾随空格
.replace(/(\r?\n){3,}/g,"$1$1");
.replace(/^ *| *$/gm,'');
更新:第一个表达式未清除字符串开头和结尾的空格
现在什么都做
.replace(/^\s*|\s*$|(\s*((\r?\n){2,})\s*|\s*((\r?\n){1,2})\s*)/g,"$2$4");
这一款也很管用:)
,也许这有帮助?您的正则表达式不起作用,还是您只是在寻找替代方法?是的,我只是在寻找替代方法,因为我不喜欢那里的替换方法:/n您可以将空格和换行符删除与以下内容结合起来:
.replace(/\s*(\r?\n){2,}\s*/g,$1”)代码>如果这就是你想要的?是的,这就是我想做的:),我会试试的,非常感谢,非常感谢:D@MNS不用担心-最新的更新(答案的底部)也会清理字符串开头和结尾的空格(第一个只清理换行符两边的空格)