ホームページ ウェブフロントエンド jsチュートリアル IE 7/8 がトリム属性_JavaScript スキルをサポートしていない場合の解決策

IE 7/8 がトリム属性_JavaScript スキルをサポートしていない場合の解決策

May 16, 2016 pm 04:47 PM
trim

IE 7 および 8 ブラウザでは、trim() 属性を使用してスペースを削除すると、エラーが報告されます。

したがって、この問題を解決するには次の解決策があります:

var aa = $("#id").val().trim() --- Trim() メソッドは IE

では解析できません

解決策:

[ var aa = $.trim($("#id").val()); これは使いにくいので、以下で紹介するものを使用してください。

W3C の人々の頭はロバに蹴られました。トリム関数 (trimLeft、trimRight) がサポートされたのは JavaScript 1.8.1 まででした。残念ながら、現在は Firefox 3.5 のみがサポートしています。文字列の両側の空白を削除することは非常に一般的であるため、すべての主要なライブラリに含まれています。また、外国人の研究は非常に精力的で、かなりの数の実装を行っています。

1 OK を達成します。 (これを js で記述し、スペースを削除したい文字列の直後に .trim() を続けます)

コードをコピー コードは次のとおりです。

String.prototype.trim = function () {
これを返す .replace(/^ss*/, '' ).replace(/ss*$/, '' );
}

見た目はあまり良くありませんが、通常の置換を 2 つ使用しています。主にブラウザの内部最適化により、実際の速度は驚くべきものになります。有名な例は文字列の結合です。Array で作成した StringBuffer よりも直接加算した方が高速です。 Base2 クラス ライブラリはこの実装を使用します。

実装 2

コードをコピー コードは次のとおりです。

String.prototype.trim = function () {
これを返す .replace(/^s /, '' ).replace(/s $/, '' );
}

は実装 1 と非常に似ていますが、主に少なくとも 1 つの空白文字があることを最初に前提としているため、わずかに遅くなります。 Prototype.js はこの実装を使用しますが、Prototype のメソッドは Ruby と同じ名前を持つように努めているため、その名前はstrip です。

3 を達成する

コードをコピー コードは次のとおりです。

String.prototype.trim = function () {
returnthis .substring(Math.max( this .search(/S/), 0), this .search(/Ss*$/) 1);
}

空白部分をインターセプトで取得し(もちろん途中の空白文字も可)、合計4つのネイティブメソッドが呼び出されます。デフォルトは非常に賢明で、substring はパラメータとして 2 つの数値を取ります。 Math.max はパラメータとして 2 つの数値を受け取り、検索では 1 つの数値が返されます。速度は上の 2 つよりも少し遅くなりますが、以下のほとんどのものよりは高速です。

4 を達成

コードをコピー コードは次のとおりです。

String.prototype.trim = function () {
returnthis .replace(/^s |s $/g, '' );
}

これは実装 2 の簡易バージョンと呼ぶことができ、候補演算子を使用して 2 つの正規表現を接続します。ただし、そうするとブラウザの最適化の機会が失われるため、実装 3 よりも劣ります。非常にエレガントに見えるため、JQuery や mootools

など、多くのライブラリで使用されています。

5 を達成する

コードをコピー コードは次のとおりです。

String.prototype.trim = function () {
var str = this ;
str = str.match(/S (?:s S )*/);
return str ? str[0] : '' ;
}

match は配列を返すため、要件を満たす元の文字列の部分がその要素になります。文字列の途中にある空白文字が削除されないようにするには、非キャプチャ グループ化 (?:exp) を使用する必要があります。配列が空の場合もあるので、後でさらに判断します。ブラウザはグループ分けの処理が比較的弱いようで、1単語が遅いです。したがって、規則性は基本的に全能ですが、規則性について迷信を持たないでください。

6 を達成する

コードをコピー コードは次のとおりです。

String.prototype.trim = function () {
return this .replace(/^s*(S*(s S )*)s*$/, '$1' );
}

要件を満たす部分を提供し、空の文字列に入れます。ただし、特に IE6 では効率が非常に悪くなります。

7 を達成する

コードをコピー コードは次のとおりです。

String.prototype.trim = function () {
return this .replace(/^s*(S*(?:s S )*)s*$/, '$1' );
}

実装 6 と非常に似ていますが、非キャプチャ グループ化を使用してそれを利用し、パフォーマンス効率がわずかに向上しています。

8 を達成する

コードをコピー コードは次のとおりです。

String.prototype.trim = function () {
return this .replace(/^s*((?:[Ss]*S)?)s*$/, '$1' );
}

上記の 2 つのアイデアに従って、非キャプチャ グループと文字セットを使用し、* の代わりに ? を使用することで改善されました。特に IE6 におけるこのパフォーマンス向上は、Firefox を直接破壊する狂気の沙汰と言えるでしょう。

実装 9

コードをコピー コードは次のとおりです。

String.prototype.trim = function () {
return this .replace(/^s*([Ss]*?)s*$/, '$1' );
}

今回は、非キャプチャ グループを置き換えるために遅延マッチングが使用されます。これは Firefox で改善されており、前回ほどクレイジーではありません。

10 を達成

コードをコピー コードは次のとおりです。

String.prototype.trim = function () {
var str = this ,
whitespace = ' nrtfx0bxa0u2000u2001u2002u2003u2004u20 05u2006u2007u2008u2009u200au200bu2028u2029 u3000' ;
for ( var i = 0,len = str.length; i = 0; i--) {
if ( whitespace.indexOf (str.charAt(i)) === -1) {
str = str.substring(0, i 1);
break ;
}
}
return whitespace.indexOf (str.charAt(0)) === -1 ? str : '' ;
}

言いたいのは、これを作った人はもはや牛とは言えず、すでに神のレベルに達しているということです。まず、考えられるすべての空白文字をリストし、最初の走査で先頭の空白を切り取り、2 番目のパスで後続の空白を切り取ります。プロセス全体では、文字列を処理するために特別に設計されたネイティブ メソッドである、indexOf と substring のみを使用し、通常のルールは使用しません。速度は驚くほど速く、内部バイナリ実装に近い速度であることが期待されており、IE と Firefox (もちろん他のブラウザでも) で優れたパフォーマンスを発揮します。速度はゼロミリ秒です。

11 を達成

コードをコピー コードは次のとおりです。

String.prototype.trim = function () {
var str = this ,
str = str.replace(/^s /, '' );
for ( var i = str.length - 1; i >= 0; i-- ) {
if (/S/.test(str.charAt(i))) {
str = str.substring(0, i 1);
break ;
}
}
return str;
}

実装 10 は、少し複雑ではありますが、通常の未知の文字列インターセプト方法が通常の置換よりもはるかに優れていることを示しています。ただし、正規表現が複雑すぎない限り、ブラウザの正規表現の最適化を使用してプログラムの実行効率を向上させ、IE で 8 のパフォーマンスを達成できます。空白の実装は長すぎて覚えるのが難しいため、通常は誰も実装 10 をプロジェクトで使用しないと思います (もちろん、クラス ライブラリを構築している場合は、間違いなく最初の実装です)。 Implementation 11 は改良版と言えます。前部のブランクは定期的な置き換えによってカットされ、後部はネイティブな方法で処理されます。効果はオリジナル バージョンに劣りませんが、速度は非常に驚異的です。 。

12 を達成

コードをコピー コードは次のとおりです。

String.prototype.trim = function () {
var str = this ,
str = str.replace(/^ss*/, '' ),
ws = /s/,
i = str.length;
while (ws.test(str.charAt(--i)));
return str.slice(0, i 1);
}

实现10与实现11在写法上更好的改进版,注意说的不是性能速度,而是易记与施用上。和它的两个先辈都是零毫秒级另外,以后就用这个来工作与吓人。

下面是老外给出的比力结果,执行背景是对Magna Carta 这文章(超过27,600字符)进行trim操作。

实现 Firefox 2 IE 6

trim1 15ms trim2 31ms trim3 46ms 31ms
trim4 47ms 46ms
trim5 156ms 1656ms
trim6 172ms 2406ms
trim7 172ms 1640ms
trim8 281ms trim9 125ms 78ms

trim10 trim11 trim12 trim函数实现揭晓自己的想法,想懂得原作者说什么请看原文。



JS 去除空格的方法目前共有12种:

实现1
String.prototype.trim = function() { return this.replace(/^ss*/, '' ).replace(/ss*$/, ''); }
实现2
String.prototype.trim = function() { return this.replace(/^s /, '').replace(/s $/, ''); }
实现3
String.prototype.trim = function() { return this.s string(Math.max(this.search(/S/), 0),this.search(/Ss*$/ )1); }
实现4
String.prototype.trim = function() { return this.replace(/^s |s $/g, ''); }
String.prototype.trim = function() { var str = this; str = str.match(/S (?:s S )*/);文字列を返しますか? str[0] : ''; }
String.prototype.trim = function() { return this.replace(/^s*(S*(s S )*)s*$/, '$1'); }
实现7
String.prototype.trim = function() { return this.replace(/^s*(S*(?:s S )*)s*$/, '$1'); }
String.prototype.trim = function() { return this.replace(/^s*((?:[Ss]*S)?)s*$/, '$1'); }
String.prototype.trim = function() { return this.replace(/^s*([Ss]*?)s*$/, '$1'); }
String.prototype.trim = function() { var str = this,whitespace = ' nrtfx0bxa0??????????????? '; for (var i = 0,len = str.length; i = 0; i--) { if (whitespace.indexOf(str.charAt(i)) === -1) { str = str.s string( 0、i 1);壊す; } } 戻り値whitespace.indexOf(str.charAt(0)) === -1 ? str : ''; }
实现11
String.prototype.trim = function() { var str = this, str = str.replace(/^s /, ''); for (var i = str.length - 1; i >= 0; i--) { if (/S/.test(str.charAt(i))) { str = str.s string(0, i 1) );壊す;文字列を返します。 }
实现12
String.prototype.trim = function() { var str = this, str = str.replace(/^ss*/, ''), ws = /s/, i = str.長さ; while (ws.test(str.charAt(--i))); str.slice(0, i 1) を返します。 }

は、2 回の正しい置換を使用して実行され、非常に高速で、主にデバイスの内部拡張から利益を得ています。

と、実際の 1 はほぼ似ていますが、最も遅いのは、最初に少なくとも 1 つの空白文字が存在するように設計されていることが主な原因です。

は、プロトタイプの方法がすべて R y と同じ名前であるため、空白部分を取得し (当然、途中に空白が存在することは許可されます)、4 つの生成方法を共通に使用します。設定は非常にうまく、文字列は 2 つの数字をパラメータとして使用します。Math.max は 2 つの数字をパラメータとして使用し、検索すると 1 つの数字が返されます。 >
これは、上実現 2 のバージョンと呼ばれるもので、適切な操作子を使用して 2 つの正規のものを接続するものです。 JQ ry と mootools

が一致すると、

の一致は 1 つの数値グループを返します。そのため、文字列結合要求の部分がその要素になります。中間の空白文字は除外され、非捕捉性のコンポーネント (?:exp) に使用する必要があります。数値グループは空の可能性があるため、後続の判定が行われます。

は、6 つの

によって要求された符号化部分が提供され、空文字列に配置されます。

と実現 6 は似ていますが、非キャプチャ ブロックが使用されるため、パフォーマンスが若干向上しています。上の 2 つの思考回路に沿って変更が加えられ、非キャプチャー パケットと文字セットが動作し、? が * に置き換えられ、非常に優れた効果が得られます。

は 9

を実行します。これは、捕捉されないコンポーネントの代わりに不使用のマッチングを使用して、火狐で改善が得られ、IE には次のような狂気はありません。

は 10

私がただ思うのは、この人はすでに牛の形をしているわけではなく、神のような階級でした。プロセス全体で、この文字列を処理する文字列である IndexOf を使用するだけで、内部で直接実行される 2 番目の方法が使用されません。

10 件の報告を達成するのは、私にとってごく一般的な原文の取得方法です。しかし、それが単純でない場合に限り、IE の表 8 に示すように、ブラウザーを使用してプログラムの実行効率を改善することもできます。空白があると非常に長くなりますので、当然のことながら(ある種類のグループを作成する場合は、そのペアが最初になります)。Implementation 11 は改良版と言えます。前部の空白は定期的な置き換えによってカットされ、後部はネイティブな方法で処理されます。効果は元のバージョンに劣りませんが、速度は非常に高速です。 。

実装 10 と実装 11 は、記述の点で優れており、改良されたバージョンです。これはパフォーマンスや速度に関するものではなく、記憶しやすさや使いやすさに関するものであることに注意してください。その 2 つの前任者はどちらもゼロミリ秒レベルであり、今後はこれを仕事や脅迫に使用します。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

実用的なヒント: PHP のトリム関数を使用して中国語のスペースを処理する方法 実用的なヒント: PHP のトリム関数を使用して中国語のスペースを処理する方法 Mar 27, 2024 am 11:27 AM

PHP プログラミングでは、文字列を処理するときに、中国語のスペースを含むスペースが頻繁に使用されます。実際の開発では、trim関数を使って文字列の両端のスペースを削除することが多いですが、中国語のスペースの処理は比較的複雑です。この記事では、PHP の Trim 関数を使用して中国語のスペースを処理する方法と、具体的なコード例を紹介します。まず、中国の空間の種類を理解しましょう。中国語では、スペースには一般的な英語のスペース (space) だけでなく、その他の特殊なスペースも含まれます。

PHP での Trim() 関数の使用ガイド PHP での Trim() 関数の使用ガイド Feb 20, 2024 am 08:39 AM

PHP での Trim() 関数の使用ガイド Trim() 関数は PHP で非常に一般的に使用され、文字列の先頭と末尾にあるスペースやその他の指定された文字を削除するために使用されます。この記事では、trim() 関数の使用法を詳しく紹介し、具体的なコード例を示します。 1. 関数の構文trim() 関数の構文は次のとおりです。trim(string$str,string$character_mask=""):string この関数は 2 つのパラメータを受け入れます。

strings.Trim 関数を使用して、指定した文字セットを文字列の先頭と末尾から削除します。 strings.Trim 関数を使用して、指定した文字セットを文字列の先頭と末尾から削除します。 Jul 24, 2023 pm 04:27 PM

strings.Trim 関数を使用して、文字列の先頭と末尾にある指定された文字セットを削除します。Go 言語では、strings.Trim 関数は、文字列の先頭と末尾にある指定された文字セットを削除できる非常に実用的な関数です。文字列をより整理して標準化します。この記事では、strings.Trim 関数の使用方法を紹介し、いくつかのコード例を示します。まず、strings.Trim 関数のプロトタイプを見てみましょう: funcTrim(sstring,cutsetstri

ソリッドステートドライブのトリム機能とはどのような機能ですか? ソリッドステートドライブのトリム機能とはどのような機能ですか? Nov 21, 2022 am 10:58 AM

ソリッド ステート ドライブのトリム機能は主に、ソリッド ステート ドライブを最適化し、使用後の SSD の速度低下と寿命の問題を解決し、データ ブロックを再利用用に準備することで SSD の効率を向上させることです。 Trim 機能は、ほぼすべての SSD ソリッド ステート ドライブに備わっている機能であり、ATA コマンドです。システムが SSD が Trim をサポートしていることを確認してデータを削除する場合、ハードディスクには削除コマンドを通知せず、ボリュームのみを使用します。ここのデータが削除されたことを記憶するためのビットマップ。これにより、より高速なデータ処理が可能になります。

PHP関数「trim」を使用して文字列の両端の空白文字を削除します PHP関数「trim」を使用して文字列の両端の空白文字を削除します Jul 25, 2023 pm 04:45 PM

PHP関数「trim」は非常に便利な文字列処理関数です。スペース、タブ、改行など、文字列の両端の空白文字を削除するのに役立ちます。 PHP プログラムを作成するとき、ユーザー入力をクリーンアップする必要がある状況によく遭遇しますが、このとき「trim」を使用すると、クリーンな文字列を確実に取得し、不規則なユーザー入力によって引き起こされるエラーを回避できます。以下は、「trim」関数の使用方法を示す簡単なコード例です: <?php

Windows 11 で TRIM を有効または無効にする方法 Windows 11 で TRIM を有効または無効にする方法 Sep 29, 2023 pm 03:13 PM

SSD ドライブを使用すると、データが失われ、復元できないという不安が常に残ります。ただし、Windows では、古いデータ ブロックを管理せずに、必要なデータのみを書き込む TRIM コマンドを実行することで、最適なパフォーマンスを実現できます。これを行うには、SSD が TRIM をサポートしていることを確認し、オペレーティング システムでそれを有効にする必要があります。 TRIMが有効かどうかを確認するにはどうすればよいですか?ほとんどの場合、最新の SSD では TRIM 機能がデフォルトで有効になっています。ただし、これがチェックアウトされていることを確認するには、管理者権限でコマンドを実行します。管理者特権でコマンド プロンプトを開き、fsutil 動作クエリ DisableDeleteNotify コマンドを実行するだけで、SSD がリストに表示されます。 0 は有効、1 は無効を意味します。のように

PHP チュートリアル: トリム関数を使用して中国語のスペースを削除する方法を学びます PHP チュートリアル: トリム関数を使用して中国語のスペースを削除する方法を学びます Mar 27, 2024 am 11:00 AM

PHP チュートリアル: 中国語のスペースを削除するトリム関数の使用方法を学びます。特定のコード例が必要です。PHP 開発では、文字列を処理する必要がある状況によく遭遇します。共通の要件の 1 つは、文字列の両端のスペースを削除することです。弦。英語の文字列を処理する場合、PHP の組み込みの Trim 関数を直接使用してこの操作を実現できますが、文字列に中国語の文字が含まれている場合、Trim 関数は正常に中国語のスペースを削除できない場合があります。この場合、いくつかの特別な処理が必要になります。私たちのニーズを達成するために必要な方法。この記事で紹介するのは

Javaでトリムを使用する方法 Javaでトリムを使用する方法 May 02, 2023 pm 01:31 PM

1. Trim() は、Java 開発者が先頭と末尾のスペースを削除するために最も一般的に使用するメソッドであることを説明します。 trim() メソッドの場合、スペース文字は 32('U+0020')* 以下の ASCII 値を持つ任意の文字です。 Trim() メソッドは、呼び出し文字列オブジェクトのコピーを返しますが、先頭と末尾はすべて削除されています。 2. インスタンス publicclassFunTester{publicstaticvoidmain(String[]args){Stringstring="onetwothree";System.out.prin

See all articles