2017-04-05 79 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

那麼接下來你會不會在** ** STOPAT開始第二個環和連接這些字符?您可能需要另一個循環才能找到最後一個非空白字符。 – user2182349

+0

'for(var i = 0; i> = stopAt; i ++)'你的意思可能是'<= stopAt'。你需要'NotWhitespace'函數來避免前導空格。 – 2017-04-05 02:15:39

+1

*「我不允許使用任何內置函數。」* - 那麼您最好將'str.charAt(i)'更改爲'str [i]'。 @epascarello - 如何使用沒有內置函數的正則表達式? – nnnnnn

回答

0

,直到你用完的字符,您可以使用此功能

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; 
}