JavaScriptのString strip()? [複製]
-
07-07-2019 - |
質問
この質問にはすでに回答があります:
- 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, '' );
}
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ファイルを参照しているため、もちろん動作しません。