web-dev-qa-db-ja.com

JavaScriptを使用して文字列からスペースを削除する方法

文字列のスペースを削除する方法例えば:

入力:'/var/www/site/Brand new document.docx'
出力:'/var/www/site/Brandnewdocument.docx'

ありがとう

456
JLuiz

この?

str = str.replace(/\s/g, '');

var str = '/var/www/site/Brand new document.docx';

document.write( str.replace(/\s/g, '') );

更新: /に基づく この質問 、これ:

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

より良い解決策です。同じ結果が得られますが、速くなります。

正規表現

\sは "whitespace"の正規表現です。そしてgは "global"フラグです。これはmatch ALL \s(空白文字)を意味します。

+の素晴らしい説明は ここ にあります。

ちなみに、一重引用符の間の内容を必要なものに置き換えることができるので、空白文字を他の文字列に置き換えることができます。

973
Šime Vidas
var a = b = " /var/www/site/Brand new   document.docx ";

console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') ); 

これを行う2つの方法!

53
rsplak

@rsplakの答えに従ってください:実際には、分割/結合方法を使うほうがregexpを使うより速いです。パフォーマンスを見る テストケース

そう

var result = text.split(' ').join('')

より速く動作します

var result = text.replace(/\s+/g, '')

小さなテキストではこれは重要ではありませんが、時間が重要な場合、たとえばテキストアナラ​​イザでは、特にユーザと対話するときは、それが重要です。


一方、\s+は、さまざまなスペース文字を処理します。 \n\tの間では、\u00a0文字と一致します。 を使用してテキストを取得する場合は、textDomNode.nodeValueが有効になっています。

だから私はここでの結論は次のようにすることができると思います:あなたが スペース ' 'を置き換える必要があるだけなら、split/joinを使ってください。 シンボルクラス - の異なるシンボルが存在する可能性がある場合はreplace(/\s+/g, '')を使用してください。

17
Minstel
var input = '/var/www/site/Brand new document.docx';

//remove space
input = input.replace(/\s/g, '');

//make string lower
input = input.toLowerCase();

alert(input);

実用例はここをクリック

7
Muhammad Tahir

最短および最速 str.replace(/ /g, '');


基準:

ここに私の結果 - (2018.07.13)Mac 67s上のSierra 10.13.3(Chrome 67.0.3396(64ビット)、Safari 11.0.3(13604.5.6)、Firefox 59.0.2(64ビット))

短い文字列

OP質問の例に似た短い文字列

enter image description here

すべてのブラウザで最速の解決策は/ /g(regexp1a) - Chrome 17.7M(操作/秒)、Safari 10.1M、Firefox 8.8Mです。すべてのブラウザで最も遅いのはsplit-joinソリューションでした。 \sに変更するか、+またはiを追加してregexpを実行すると処理が遅くなります。

長い文字列

約300万文字までの文字列の結果は次のとおりです。

  • regexp1a :Safari 50.14 ops /秒、Firefox 18.57、Chrome 8.95
  • regexp2b :Safari 38.39、Firefox 19.45、Chrome 9.26
  • 分割 - 結合 :Firefox 26.41、Safari 23.10、Chrome 7.98、

あなたのマシン上で実行することができます: https://jsperf.com/remove-string-spaces/1

5
  var output = '/var/www/site/Brand new document.docx'.replace(/ /g, ""); 
    or
  var output = '/var/www/site/Brand new document.docx'.replace(/ /gi,"");

注:スペースを削除するために 'g'または 'gi'を使用しても、どちらも同じように動作します。

Replace関数で 'g'を使うと、完全一致をチェックします。しかし、 'gi'を使用した場合、大文字と小文字の区別は無視されます。

参考のために ここをクリック

2
Raveendra007