[JS]手动修剪字符串中所有空格的左侧

时间:2017-04-08 17:11:38

标签: javascript string

我一直在尝试创建一个trimLeft()函数,我似乎在逻辑上画空白。

我不允许使用内置函数,如replace,splice,substr,substring,trim或toString。

我一直在努力:

function trimLeft(string){
     var noSpace = '';
     for(var o = 0; o < string.length; o++){
         if (string.charAt(o) !== ' ' && string.charAt(o) !== "\t"){
             noSpace += string.charAt(o);
         }
     }
     return noSpace;
 }
 window.alert(trimLeft("|" + "\tAPPLE\t" + "|"));

但是它会删除所有空格而不是左侧。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

这是一个有效的解决方案:

&#13;
&#13;
function trimLeft(string) {
    for (var o = 0; o < string.length; o++){
        if (string.charAt(o) !== ' ' && string.charAt(o) !== "\t"){
            return string.substring(o);
        }
    }
}

window.alert("|" + trimLeft("\tAPPLE\t") + "|");
&#13;
&#13;
&#13;

请注意,只要找到非空白字符,就会立即返回字符串的其余部分。

另请注意,使用window.alert()的测试不起作用,因为您使用字符串"|\tAPPLE\t|"测试了该函数,该字符串没有前导空格。

这是一个没有使用任何内置字符串函数的解决方案:

&#13;
&#13;
function trimLeft(string) {
    var noSpace = "";
    var isStart = true; // becomes false as soon as non-whitespace is found
    for (var o = 0; o < string.length; o++) {
        if (!isStart || (string[o] !== " " && string[o] !== "\t")) {
            noSpace += string[o];
            isStart = false;
        }
    }
    return noSpace;
}
window.alert("|" + trimLeft("\tAPPLE\t") + "|");
window.alert("|" + trimLeft("    BANANA  ") + "|");
&#13;
&#13;
&#13;