这些方式进行字符串操作的利弊是什么?

时间:2019-04-21 21:11:49

标签: javascript regex string function ecmascript-6

我正在做一个非常简单的编码挑战。返回字符串的第n个字母。而且,在将此标记为重复之前,我已经有一些解决方案。而且,我知道通过编程,可能有很多方法可以达到相同的结果。但是我想知道以下解决方案的逻辑,可读性或语法是否有很大的不同。哪个被认为是有利的解决方案?在此示例中,我每三个执行一次。如果您有更好的解决方案,我希望看到。

function testcode(str){
  let newstr = '';
  for (let i=2; i<str.length; i+=3) {
      newstr += str[i]
  }
  return newstr;
}
testcode('hellostackoverflow');

function testcode(str){
  let newstr='';
  for (let i=0; i<str.length; i++) {
      if ((i+1)%3 === 0){
        newstr += str[i];
      }
  }
  return newstr;
}

testcode('hellostackoverflow');

我也尝试过使用正则表达式,但是如果不是3,就不会替换字符。

let str = "aaCaaCaaCaa";

let result = str.replace(/..(.)/g, "$1");
console.log(result);
//gives me CCCaa

1 个答案:

答案 0 :(得分:0)

  

哪个将被视为最佳解决方案?

您的第一个。它在逻辑和语法上都很简单,因此可读性很高。

可能更重要的是,它也更有效:它仅需O(n/k)个步骤(在您的示例中为k=3),仅查看每三个索引/字符,而不是每个索引/字符({ {1}}。