3

このコードは空白を削除します (fyi: 非常に高速であるとされています)。

function wSpaceTrim(s){
    var start = -1,
    end = s.length;
    while (s.charCodeAt(--end) < 33 );  //here
    while (s.charCodeAt(++start) < 33 );  //here also 
    return s.slice( start, end + 1 );
}

while ループには括弧がありません。このコードに括弧を正しく追加するにはどうすればよいですか?

while(iMean){
  // like this;
}

どうもありがとう!

4

2 に答える 2

7

ループ本体は空です (実際に発生するのは、ループ条件内のインクリメント/デクリメント操作です)。単純に次を追加し{}ます。

while (s.charCodeAt(--end) < 33 ){}
while (s.charCodeAt(++start) < 33 ){}

同じ while ループのより長く、おそらく読みやすいバージョンは次のようになります。

end = end - 1;
while (s.charCodeAt(end) < 33 )
{
    end = end - 1;
}
start = start + 1;
while (s.charCodeAt(start) < 33 )
{
    start = start + 1;
}
于 2010-06-06T16:57:51.590 に答える
2

コードには括弧は必要ありませんが、ネイティブのトリム メソッドを使用するオプションが必要です。

Opera、Firefox、および Chrome にはすべて、ネイティブの文字列プロトタイプ トリム機能があります。他のブラウザでも同様に追加できます。この特定のメソッドについては、可能であれば組み込みメソッドを使用するために、String.prototype を少し変更すると思います。

if(!String.prototype.trim){
    String.prototype.trim= function(){
        var start= -1,
        end= this.length;
        while(this.charCodeAt(--end)< 33);
        while(this.charCodeAt(++start)< 33);
        return this.slice(start, end + 1);
    }
}

これは確かに速いかもしれませんが、私はシンプルな方が好きです-

if(!(''.trim)){
    String.prototype.trim= function(){
        return this.replace(/^\s+|\s+$/g,'');
    }
}
于 2010-06-07T02:59:51.923 に答える