jQueryでテキストを取得するときに空白を削除するにはどうすればよいですか?


183

jQueryを使用してmailto:アンカーをメールアドレスの周囲にラップしたいのですが、CMSが生成するホワイトスペースも取得しています。

これが、私が操作しなければならないHTML、私が持っているスクリプト、そして出力のコピーです。

HTML

<div class="field field-type-text field-field-email">
  <div class="field-item">
    name@example.com    </div>
</div>

jQuery JavaScript

$(document).ready(function(){
  $('div.field-field-email .field-item').each(function(){
    var emailAdd = $(this).text();
      $(this).wrapInner('<a href="mailto:' + emailAdd + '"></a>');
   });
 });

生成されたHTML

<div class="field field-type-text field-field-email">
  <div class="field-items"><a href="mailto:%0A%20%20%20%20name@example.com%20%20%20%20">
    name@example.com    </a></div>
</div>

この質問を読んでいる他の人が先頭と末尾の空白を削除したいと思うかもしれませんが、ラップしている電子メールアドレスであることを考えると、すべての空白を失ってとてもうれしいです。


回答:


333

replacejsで関数を使用します。

var emailAdd = $(this).text().replace(/ /g,'');

すべてのスペースが削除されます

先頭と末尾の空白のみを削除する場合は、jQuery $ .trimメソッドを使用します。

var emailAdd = $.trim($(this).text());

11
正解ですが、/ \ s / gはより明確なパターンになります( "i"は冗長であり、 ''は珍しい形式です-/(^ \ s *)|(\ s * $)/ gのパターンも表示されますトリムに相当
annakata 2008

1
あなたは正しいアンナカタです。/iを削除しました。これは、この場合の大文字と小文字の区別が問題にならないため、冗長であるためです
Andreas Grech

6
IEは改行しないスペース(&nbsp;、&#160;、&#xA0;、\ xA0、\ u00A0など...)を空白と見なさないため、/ [ \ s \ xA0] + / gは、すべての空白を置き換える場合に信頼性が高くなる可能性があります。
トラビス


69

実際、jQueryにはトリム関数が組み込まれています。

 var emailAdd = jQuery.trim($(this).text());

詳細はこちらをご覧ください。


3
すべての組み込み機能にはjQueryラッパーが必要であるため
jasonszhao

24

str=str.replace(/^\s+|\s+$/g,'');


1
これにより、PHPトリム関数のように、先頭と末尾の空白が削除されます。
Paul

1
あなた自身を説明できますか?
フランシスココラレスモラレス

1
@FranciscoCorralesMorales:ここで選択肢があると思います:正規表現について学ぶか、しないか。そうすると表現が自明になりますし、そうでなければ説明が難しいのでわかりやすいです。だから:正規表現について学びます。それらを学習しようとしてもまだ理解できない場合は、理解していないものについて具体的に質問してください。
PeterV.Mørch16年

5
この/ ^ \ s + | \ s + $ / gのようなものを「通常」と呼ぶにはどうすればよいですか?
RyanNerd 2016年

これらは、正規言語、つまり有限状態マシンを使用して解析できる言語を記述できるため、正規表現と呼ばれます。最も純粋な形式の正規表現は、実際には有限状態機械を記述する方法です。コンピューターが理解できる方法でコードにオートマトンの図を含めるのがどれほど難しいかを考えると、正規表現は、その簡潔さによって人間が解析するのが非常に困難になる場合でも、かなり素晴らしいものです。
QuantumOmega 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.