テキストからすべての空白を削除します


590
$("#topNav" + $("#breadCrumb2nd").text().replace(" ", "")).addClass("current");

これは私のコードからの抜粋です。別のIDのテキストプロパティを取得した後、クラスをIDに追加したい。この問題は、必要なテキストを保持するIDに文字間のギャップが含まれていることです。

空白を削除してください。私が試してみましたTRIM()し、REPLACE()これは部分的にしか機能します。REPLACE()唯一の第一のスペースを削除します。

回答:


1349

正規表現を繰り返すようにreplace()に指示する必要があります。

.replace(/ /g,'')

グラムの文字は、文字列全体を通じて検索を繰り返すことを意味します。これと、JavaScript 利用できる他のRegEx修飾子については、こちらをお読みください

リテラルの空白文字だけでなく、すべての空白に一致させたい場合は、\s代わりに次を使用します。

.replace(/\s/g,'')

30
Coffeescriptは、なんとなくひどい理由でその正規表現について文句を言うでしょう。代わりに私は先に行く必要があり、.replace(/\s+/g, '')それを使用することは私には全く問題ありません。
Dan Bradbury

7
あなたがリードすると、空白が削除末尾との文字列のコピーを返しますルビーのstring.strip方法、のようなものを実装したい場合は、この作業をする必要があります: 手段を空白文字列の先頭、後の手段の最後に空白文字列、/はグループ内の/またはのいずれかであり、修飾子は上記のコメントで説明されています。また、空白の1つ以上のインスタンスをキャプチャするため、それぞれの後に数量詞が必要です。x = " Many spaces before and after " y = x.replace(/(^\s+|\s+$)/g, "")^\s\s$|g+\s
Garrett Simpson

300
.replace(/\s+/, "") 

最初の空白のみを置き換えます。これには、スペース、タブ、改行が含まれます。

文字列内のすべての空白を置き換えるには、グローバルモードを使用する必要があります

.replace(/\s/g, "")

11
最初のものはすべての空白を削除するのではなく(スペース/改行/タブの最初のグループのみを削除します)、2番目は問題ありません。デモ:regex101.com/r/wX8rF2/3

4
.replace(/ \ s + / g、 '')
mynameistechno

@mynameistechno (グローバル)修飾子を+既に使用しているため、何も追加されませんg
d4nyll

最初の行は、テキストから末尾のスペースを削除しないため機能しませんでした
UKDataGeek

@ d4nyllそれはそれがより効率的になるかもしれません。
ソロモンウッコ

5

String.prototype.replace他の回答で述べたように、正規表現で使用することは確かに最良の解決策です。

ただし、面白くするために、String.prototype.splitand を使用して、テキストからすべての空白を削除することもできますString.prototype.join

const text = ' a b    c d e   f g   ';
const newText = text.split(/\s/).join('');

console.log(newText); // prints abcdefg

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.