2017-04-05 80 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; 
}