我有一个工具可以从确认(文本)中删除空白行,但由于某种原因,有一个顶行未被读取为空白行并且不会被删除。
目前,我的工具允许一个人将文本粘贴到textarea中,然后当"删除空格&拷贝"单击按钮删除空白行并将文本复制到剪贴板。
我希望保持相同的功能,但不管怎么说,当文本输入textarea或删除空格&&时,删除第一行。拷贝"单击按钮。
<script>
function copyToClipboard(element) {
var text = $(element).clone().find('br').prepend('\r\n').end().text()
element = $('<textarea>').appendTo('body').val(text).select()
document.execCommand('copy')
element.remove()
}
</script>
<textarea name="mas" rows="100" rows="50" contenteditable="true" id="p20" class="content" onchange="this.value=this.value.replace(/[\n\r](?!\w)/gi,'');" style="height: 500px; width:800px;" type="text" data-bind="value: myValue, hasFocus: cleared"></textarea>
<!----------- BUTTONS ------------>
<div class="fixed">
<button onclick="copyToClipboard('#p20')" class="templateBtn">Remove Spaces & Copy</button>
<input type="button" data-bind="click: clearValue" value="clear" class="templateBtn" />
<script type="text/javascript">
var viewModel = {
myValue: ko.observable(''),
cleared: ko.observable(false),
clearValue: function() {
this.myValue('');
this.cleared(true);
}
};
ko.applyBindings(viewModel);
</script>
<!----------- END.BUTTONS ------------>
<div class="mas" id="hide" ></div>
<pre contenteditable="true" id="p20" class="templateText">
</div></div>
答案 0 :(得分:1)
正则表达式[\n\r](?!\w)
匹配任何CR或LF后面没有字母数字或下划线字符。因此,当用空字符串替换空行时,它可以匹配连续两行中的第一个。 ''
它与行终止符后跟一个字母不匹配。因此,文本开头的行终止符后跟一个单词字符留在原位。
空白行定义为&#34;行开头,后跟零个或多个空格字符,不包括行终止符,后跟行尾,后跟零个或多个行终止符&#34;可以通过多行正则表达式匹配,例如:
/^[ \f\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]*$[\n\r]*/gm;
其中第一个字符集是用于在删除换行符和回车字符后匹配空格(\s
),并且$[\n\r]*
组件匹配行终止符和输入结束。 (编辑:末尾没有行终止符的尾随空白行匹配)
通过输入行并在textarea元素外部单击以触发更改事件来尝试下面的操作:
function removeBlankLines( textArea) {
var blankLine = /^[ \f\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]*$[\n\r]*/gm;
textArea.value=textArea.value.replace(blankLine,'');
}
&#13;
<textarea onchange="removeBlankLines( this)" cols="20" rows="8"></textarea>
&#13;
这不会修剪或删除非空行中的空格。如果您仍然无法实现您想要做的事情,请使用用于产生问题的文本数据更新问题,并详细说明您的期望和所获得的内容。如果与问题无关,请删除淘汰代码(它似乎不是)。
答案 1 :(得分:0)
以下是您可以使用的快速解决方法,对替换后的文字执行trim()
:
<textarea name="mas" rows="100" rows="50" contenteditable="true"
id="p20" class="content"
onchange="this.value=(this.value.replace(/[\n\r](?!\w)/gi,'')).trim();"
style="height: 500px; width:800px;" type="text"
data-bind="value: myValue, hasFocus: cleared"></textarea>