2017-12-19 9 views
1

確認(テキスト)から空白行を削除するツールがありますが、なんらかの理由で空白行として読み込まれず削除されない行があります。

現在のところ、私のツールではテキストエリアにテキストを貼り付けることができますが、「スペースを取り除くと&コピー」ボタンをクリックすると空白行が削除され、テキストがクリップボードにコピーされます。

私は、同じ機能を維持したいが、何とかテキストはテキストエリアとき、またはボタンをクリックすると、「&コピーはスペースを削除」に入力されたいずれかの最初の行を削除します。ここで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

textareasには、行(および列)という特別な属性があります。それは何かを見るかもしれない...? –

答えて

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> 
+0

これは素晴らしいです!どちらも動作します!どうもありがとうございます! – user3806255

1

正規表現[\n\r](?!\w)は、CRまたはLFの後に英数字またはアンダースコアがない場合に一致します。したがって、ブランク行をヌル文字列に置き換えるときに、行内の2つの行終端文字の最初の文字と一致することができます。 ''行終端文字とそれに続く文字が一致しません。したがって、テキストの先頭の行終端文字に続いて単語文字が残ります。

空白行は、「行の終わりに続けて、行終端文字を含まない0個以上の空白文字が続き、行の終わりに続けて0個以上の行終端文字が続く」と、複数行の正規表現:最初の文字セットは、ラインフィード、キャリッジ・リターン文字を除去した後の空白(\s)を合わせるためのその使用され、そして$[\n\r]*成分は、ラインターミネータと入力の両端に一致

/^[ \f\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]*$[\n\r]*/gm; 

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,''); 
 
}
<textarea onchange="removeBlankLines(this)" cols="20" rows="8"></textarea>

は、変更イベントをトリガする行を入力し、TEXTAREAエレメントの外側クリックして、以下にそれを試してみてください(編集終了時の回線終端せずに後続の空白行が一致しています)

空白でない行の空白を削除したり削除したりしません。あなたがやりたいことを達成するのにまだ問題が残っている場合は、問題を作り出すために使用されたテキストデータと、あなたが何を得たのかについての詳細な説明を更新してください。質問に関連していない場合はノックアウトコードを削除してください(表示されていないようです)。

関連する問題