如何使用for循环删除JavaScript中字符串左右两边的空格?

How can I use a for loop to delete empty spaces at the left and right of a string in JavaScript?

我正在尝试自制 trim() 的 JavaScript 方法。我的意思是,我想做的可以使用 trim() 来实现:从 string.

的左右删除所有白色 space

我想到了这个麻烦的解决方案;我认为它应该起作用,但它根本不起作用;相反,它删除了 string array 的所有元素,只留下一个 array 字符串,其中一个空 space 作为唯一元素。

这是我编写的 运行 代码片段:

const stringWithManyWhiteSpaces = '        I like ants... Remember us   ';

const charArray = [...stringWithManyWhiteSpaces];

function killLeftToRight(charArr) {
    for ( let i = 0; i < charArr.length; i++) {
        if (charArr[i] === ' ') {
            charArr.splice(i + 1);
        } else {
             break;
        }
    }
}

function killRightToLeft(charArr) {
    for ( let i = charArr.length -1; i >= 0; i--) {
        if (charArr[i] === ' ') {
            charArr.splice(i + 1);
        } else {
            break;
        }
    }
}

function myTrim(){
  killRightToLeft(charArray)
  killLeftToRight(charArray);
  console.log(charArray)
}

myTrim();

谁能帮我弄清楚我的代码有什么问题?非常感谢。

  • 要从数组中删除项目,splice 需要您在第二个参数中指定要删除的项目数量
  • splice 将从数组中删除给定索引处的项目,因此在下一次迭代中,如果您按升序遍历索引,您可能会“跳过”一个项目,因为它指数刚刚重新计算

更易于使用 .pop(从末尾删除)和 .shift(从开头删除)。

const stringWithManyWhiteSpaces = '        I like ants... Remember us   ';

function killLeftToRight(charArr) {
    while (charArr[0] === ' ') {
        charArr.shift();
    }
}

function killRightToLeft(charArr) {
    while (charArr[charArr.length - 1] === ' ') {
        charArr.pop();
    }
}

function myTrim(str){
  const charArray = [...str];
  killRightToLeft(charArray);
  killLeftToRight(charArray);
  console.log(charArray.join(''));
}

myTrim(stringWithManyWhiteSpaces);

去除白色 space 所需要做的就是 string.trim()

你的方法可以用不同的方式改变,所以它会像前面的答案中提到的那样工作得很好,但是如果你的目标是有你自己的修剪实现,以更简单的方式实现它怎么样?:

const stringWithManyWhiteSpaces = `        


I like ants... Remember us   


   `;

function trimMe(stringToTrim) {
  return stringToTrim.replace(/^[\s\n]+|[\s\n]+$/g, '')
}

console.log(trimMe(stringWithManyWhiteSpaces));