我想创建一个不使用 java 脚本中任何内置函数的函数,并删除接收字符串两端的空格


function func(str) {
        var a = "" , c;
        var b = 0;
        for(var i = 0; i < str.length; i++)
        {
            c = str.charAt(i);
            if((str[i] != ' ' && str[i] != 'n' && str[i] != 't') || b > 0)
            {
        a += c;
        b++;
    }
return a;    
}

到目前为止,该功能我已经从左侧删除了空格,但我无法弄清楚从右侧删除空格。任何人都有任何建议。

我认为如果你不尝试在一个循环中完成所有操作,这是最干净的。我会使用循环来查找开头、结尾并复制所需的字符串部分。您仍然几乎只是迭代一次,但您将每个任务与其他任务分开。

function isSpace(c) {
  return c == ' ' || c == 'n' || c == 't'
}
function slice(str, from, to) {
  var start = from >= 0 ? from : 0;
  var end = to <= str.length ? to : str.length;
  var a = "";
  while (start < end) a += str[start++];
  return a;
}
function trim(str) {
  var first = 0, last = str.length-1;
  while (isSpace(str[first])) first++; // find trimmed start
  while (isSpace(str[last])) last--;   // find trimmed end
  
  return slice(str, first, last+1); // create the desired substring
}
console.log(JSON.stringify(trim("  foo bar  ")));

使用你已经必须执行字符串末尾的相同逻辑,但只需从末尾开始循环并更改构建"a"的方式:

function reverseFunc(str) {
    var a = "" , c;
    var b = 0;
    for(var i = str.length-1; i >=0; i--)
        {
            c = str.charAt(i);
            if((str[i] != ' ' && str[i] != 'n' && str[i] != 't') || b > 0)
            {
                a = c + a;
                b++;
            }
        }
    return a;
}

相关内容

最新更新