【问题标题】:Split string to equal length substrings in javascript在javascript中将字符串拆分为相等长度的子字符串
【发布时间】:2021-08-11 09:52:42
【问题描述】:

我有一个字符串,例如“8FPHFW08”,我想获取这些子字符串:“8F000000”、“00PH0000”、“0000FW00”、“00000008”。

对应的python函数是这样的:

def split_str(s):
    res = []
    for i in range(0,len(s),2):
        a = ['0']*len(s)
        a[i:i+2] = s[i:i+2]
        res.append("".join(a))
    return res 

这是我的尝试,但空位需要 0

function split_olc(olc) {   
    var splitted = []
    splitted.push(olc.match(/(..?)/g))
    console.log(splitted[0])
    return splitted[0]

}

如何在 Javascript 中做同样的事情?

【问题讨论】:

  • 您是否尝试过编写任何 JavaScript 代码? Stack Overflow 不是免费的代码编写服务。
  • 是的,我把我的代码放在js里
  • 您的 JS “尝试”甚至没有尝试重新创建 Python 正在执行的操作...
  • 我只需要一种方法来获得该结果,我不在乎如何。你是来帮助或批评别人的吗?
  • 我们是来帮忙的,但是“仅仅提供代码”并没有帮助。就像授人以鱼与授人以渔的古话一样。然而,有时你可以给一个人一条鱼,然后教他如何获得更多。这就是为什么我的回答提供了代码,并解释了它的作用,希望你未来的努力顺利。如果我再次见到你,我很乐意再次提供帮助,只要你表现出一些努力和进步:)

标签: javascript string split substring


【解决方案1】:

JavaScript 字符串是不可变的,因此“用另一个子字符串覆盖一个子字符串”没有花哨的快捷方式。你必须自己slice

从一个“模板”开始,一个适当长度的全零字符串,然后将它和你的主题字符串适当地拼接起来。

const template = s.replace(/./g,'0');
const res = [];
for( let i=0; i<s.length; i+=2) {
    res.push(
        template.substring(0, i)
        + s.substring(i, i+2)
        + template.substring(i+2)
    );
}
return res;

【讨论】:

    【解决方案2】:

    不确定这是学习一门新语言的最佳方式,但我尝试为您提供最好的一对一的 Python 到 js 代码翻译:

    function split_str(s) {                          // def split_str(s):
        const res = []                               // res = []
        for (let i = 0; i < s.length; i += 2) {      // for i in range(0,len(s),2):
            const a = new Array(s.length).fill('0'); //   a = ['0']*len(s)
            a.splice(i, 2, s[i], s[i+1]);            //   a[i:i+2] = s[i:i+2]
            res.push(a.join(''));                    //   res.append("".join(a))
        }
        return res;                                  // return res 
    }
    
    console.log(split_str('helloworld'))

    【讨论】:

    • 我喜欢这个。很不错。有时,“翻译”语言很容易。请记住,在目标语言中可能有其他(更好的?)方法来实现它。
    • @NiettheDarkAbsol 当然可以,但是如果您已经使用一种语言思考,那么首先转换这些模式比学习一套全新的模式更容易。
    【解决方案3】:

    使用slice 获取部分字符串。使用padStartpadEnd0 填充开头和结尾

    function replace(str) {
      const len = str.length,
            output = []
            
      for (let i = 0; i < len; i += 2) {
        output.push(
          str.slice(i, i+2)
              .padStart(i+2, '0')
              .padEnd(len, '0')
        )
      }
    
      return output
    }
    
    console.log(
      ...replace("8FPHFW08")
    )

    【讨论】:

      猜你喜欢
      • 2011-04-15
      • 2011-04-11
      • 1970-01-01
      • 2012-11-20
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      相关资源
      最近更新 更多