質問

    

この質問にはすでに回答があります:

    
            
  •              JavaScriptの文字列のトリム                                      25の答え                          
  •     
    

文字列から先頭と末尾のスペースを削除する、クリーンで効率的なJavaScript実装とは何ですか?

例:

"犬"

" dog"

"犬"

"犬"

すべてになります

" dog"

役に立ちましたか?

解決

これを使用:

if(typeof(String.prototype.trim) === "undefined")
{
    String.prototype.trim = function() 
    {
        return String(this).replace(/^\s+|\s+$/g, '');
    };
}

トリム関数は、文字列のファーストクラス関数として利用できるようになります。例:

" dog".trim() === "dog" //true

編集:正規表現パターンを1つに結合するというJ-Pの提案を受けました。また、クリストフの提案に従ってグローバル修飾子を追加しました。

トリム関数を再作成する前に、トリム関数のスニッフィングについてのマシュークランリーのアイデアを参考にしてください。これは、クライアントで使用されているJavaScriptのバージョンがより新しいため、独自のネイティブトリム機能がある場合に行われます。

他のヒント

jqueryユーザーの場合、 $。trim(s)

はどうですか

Gumboはコメントでこれをすでに指摘しましたが、これは答えとして繰り返します: trim()メソッドはJavaScript 1.8.1で追加され、すべての最新ブラウザー(Firefox 3.5+、 IE 9、Chrome 10、Safari 5.x)、ただしIE 8以前ではサポートされていません。使い方は簡単です:

 "  foo\n\t  ".trim() => "foo"

参照:

ここに私が使用する関数を示します。

function trim(s){ 
  return ( s || '' ).replace( /^\s+|\s+$/g, '' ); 
}

MDN BOM および NBSP

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}

組み込みのプロトタイプを変更するとパフォーマンスが低下することを念頭に置いてください(JSエンジンが多くのランタイム最適化を必要とするため)。パフォーマンスが重要な状況では、 myTrimFunctionを定義する代替案を検討する必要があります。 (文字列)代わりに。そうは言っても、ネイティブの .trim()をサポートしない古い環境をターゲットにしている場合は、より重要なパフォーマンスの問題に対処する必要があります。

Steven Levithan は、かつて高速なJavaScriptトリム。一見の価値があります。

すでにjQueryを使用している場合は、 jQueryをご覧ください。 .trim() は既にjQueryで提供されています。

文字列をトリムする新しいコードを書くのではなく、" strip()"を呼び出す既存のコードを見ている場合なぜ機能しないのか疑問に思ったら、prototypejsフレームワークのようなものをインクルードしようとしているかどうかを確認し、実際にロードされていることを確認してください。
そのフレームワークはすべてのStringオブジェクトにストリップ関数を追加しますが、アップグレードしましたが、Webページが古い.jsファイルを参照しているため、もちろん動作しません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top