【问题标题】:What the pros and cons of doing string manipulation these ways?这些方式进行字符串操作的优缺点是什么?
【发布时间】:2019-04-21 21:11:49
【问题描述】:

我正在做一个非常简单的编码挑战。返回字符串的每第 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

【问题讨论】:

  • @CertainPerformance 它们的意思是每三个字母

标签: javascript regex string function ecmascript-6


【解决方案1】:

哪个会被认为是有利的解决方案?

你的第一个。它在逻辑上和句法上都很简单,因此具有很高的可读性。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多