2017-04-05 33 views
0
function lefttrim(str) 
{ 
    function NotWhitespace(ch) 
    { 
     return ch != '\n' && ch != '\t' && ch != '\r' && ch != ' ' && ch != ''; 
    } 
    var stopAt = str.length; 
    for (;stopAt >= 0; --stopAt) 
     if (NotWhitespace(str.charAt(stopAt))) 
      break; 


    var output = ''; 
    for (var i = 0; i >= stopAt; i++) 
     output += str.charAt(i); 
    return output; 
} 

これは現在、文字列の右側の空白を削除しますが、文字列の左側と右側の両方から空白を削除しようとしています。私は、この特定のエクササイズにビルトイン関数を使用することはできません。文字列の両端から空白を削除する

+0

この機能を使用することができますか?最後の空白以外の文字を見つけるには、おそらく別のループが必要です。 – user2182349

+0

for(var i = 0; i> = stopAt; i ++) 'おそらく' <= stopAt'を意味します。先頭の空白を避けるには 'NotWhitespace'関数が必要です。 –

+1

* "組み込み関数は使用できません。" * - 次に、str.charAt(i)をstr [i]に変更することをお勧めします。 @epascarello - どのように組み込み関数なしで正規表現を使用しますか? – nnnnnn

答えて

0

あなたはそれではあなたは** ** STOPATで第二のループを開始し、文字を使い果たすまで、文字を連結していないでしょう

function cust_trim(str){ 
    String.prototype.IsWhiteSpace = function(){ 
     return this == '\n' || this == '\t' || this == '\r' || this == ' ' || this == ''; 
    } 

    var i = 0; 
    var j = str.length - 1; 
    while(str.charAt(i).IsWhiteSpace() && i <= j) i++; 

    if(i > j) return ""; // all white spaces 

    while(str.charAt(j).IsWhiteSpace() && j >= 0) j--; 

    var output = ''; 
    while(i <= j) 
     output += str.charAt(i++); 
    return output; 
} 
関連する問題