【问题标题】:How can I use a for loop to delete empty spaces at the left and right of a string in JavaScript?如何使用 for 循环删除 JavaScript 中字符串左侧和右侧的空格?
【发布时间】:2021-11-29 18:50:48
【问题描述】:

我正在尝试制作一个自制的trim() 的 JavaScript 方法。我的意思是,我想做的可以使用trim():删除string左右的所有空格。

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

这是我做的代码的运行 sn-p:

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();

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

【问题讨论】:

    标签: javascript for-loop string-iteration


    【解决方案1】:
    • 要从数组中删除项目,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);

    【讨论】:

      【解决方案2】:

      您的方法可以通过不同的方式进行更改,因此它可以正常工作,如上一个答案中所述,但是如果您的目标是拥有自己的修剪实现,那么以更简单的方式实现它呢?:

      const stringWithManyWhiteSpaces = `        
      
      
      I like ants... Remember us   
      
      
         `;
      
      function trimMe(stringToTrim) {
        return stringToTrim.replace(/^[\s\n]+|[\s\n]+$/g, '')
      }
      
      console.log(trimMe(stringWithManyWhiteSpaces));

      【讨论】:

        【解决方案3】:

        删除空白所需的只是 string.trim()

        【讨论】:

          猜你喜欢
          • 2011-12-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-07
          • 1970-01-01
          • 2022-12-05
          • 2016-04-20
          • 2010-10-10
          相关资源
          最近更新 更多