我正在使用此代码缩进文本块。它工作正常,但最后会增加空白区域。
public var indentPattern:RegExp = /([\t ]*)(.*)$/gm;
public function indent(input:String, indentAmount:String = "\t"):String {
if (input==null || input=="") return indentAmount;
var indentedText:String = input.replace(indentPattern, indentAmount + "$1$2");
return indentedText;
}
测试输入数据:
<style type="text/css">
html, body {
height:100%;
margin:0;
padding:0;
line-height:.8;
}
*, *:before, *:after {
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing:border-box;
}
</style>
实际输出:
<style type="text/css">
html, body {
height:100%;
margin:0;
padding:0;
line-height:.8;
}
*, *:before, *:after {
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing:border-box;
}
</style>
注意:当我说分号后面的行末尾添加了空白区域的空格。尝试突出显示页面上的文字,看看我在说什么。
答案 0 :(得分:3)
问题在于
([\t ]*)(.*)$
可以匹配空字符串。因此,在行的末尾匹配一个空字符串,并在那里放置indentAmount
。将其更改为:
([\t ]*)(.+)$
或者从每行的开头开始匹配:
^([\t ]*)(.*)$
答案 1 :(得分:1)
如果其他所有内容都已到位,请在返回之前尝试删除它们:
indentedText = indentedText.replace(/\s+$/g, '');