javascript如何处理这段字符串?

"统一代码:15235168151332;号码:db872e8ne92;名称:浙江电气科技公司"

想要把统一代码提出来,格式就是key:value分号分隔,但key的出现有可能不按顺序,这个js要怎么写?

已解决 悬赏分:80 - 解决时间 2022-01-16 17:15
反对 0举报 0 收藏 0

回答5

最佳
  • @
    selectNumber (str) {
        let  info = ''
        let  arr = str.split(';')
        for (let  item  of  arr) {
            if (item.indexOf('统一代码') !== -1) {
                info = item
                break
            }
        }
        let  keyAndVal = info.split(':')
        return  keyAndVal[1]
    }
    
    selectNumber("统一代码:15235168151332;号码:db872e8ne92;名称:浙江电气科技公司") 
    // "15235168151332"
    支持 0 反对 0 举报
    2022-01-16 11:24
  • @

    正则方式

    const obj = "统一代码:15235168151332;号码:db872e8ne92;名称:浙江电气科技公司"
      .match(/(?<=^|;|:)([^:;]+)(?=$|;|:)/g)
      .reduce(
        (r, k, i, arr) => (i % 2 === 1 ? r : Object.assign(r, { [k]: arr[i + 1] })),
        {}
      );
    console.log(obj)
    // output: {统一代码: "15235168151332", 号码: "db872e8ne92", 名称: "浙江电气科技公司"}

    split方式

    const obj = Object.fromEntries(
      "统一代码:15235168151332;号码:db872e8ne92;名称:浙江电气科技公司"
        .split(";")
        .map((str) => str.split(":"))
    );
    console.log(obj)
    // output: {统一代码: "15235168151332", 号码: "db872e8ne92", 名称: "浙江电气科技公司"}

    如果只是想取出统一代码

    const [code] = "统一代码:15235168151332;号码:db872e8ne92;名称:浙江电气科技司".match(/(?<=(?:^|;)统一代码:)(\d+)(?=(?:$|;))/) || []
    console.log("code=", code)
    // output: code= 15235168151332
    支持 0 反对 0 举报
    2022-01-16 11:30
  • @

    6622332323.png

    var res = strToObject("统一代码:15235168151332;号码:db872e8ne92;名称:浙江电气科技公司")
    
    console.log('转换结果:', res) // => {统一代码: "15235168151332", 号码: "db872e8ne92", 名称: "浙江电气科技公司"}
    
    console.log(res['统一代码']) // => 15235168151332
    
    function strToObject (str) {
      var res = {}
      str.replace(/(.*?):(.*?)(;|$)/g, function (g, key, value) {
        res[key] = value
      })
      return res;
    }
    支持 0 反对 0 举报
    2022-01-16 13:03
  • @
    "统一代码:15235168151332;号码:db872e8ne92;名称:浙江电气科技公司".match(/统一代码:([^;]+)/gi)
    
    ["统一代码:15235168151332"]
    支持 0 反对 0 举报
    2022-01-16 14:00
  • @
    const t = "统一代码:15235168151332;号码:db872e8ne92;名称:浙江电气科技公司";
    
    // 要简单,一句话,用正则就能找出来
    const code = (t.match(/统一代码:(.+?);/) ?? [])[1];
    console.log(code);
    
    // 要正统一点,先抽取数据,再去找需要的
    const model = t.split(";")
        .map(pair => pair.split(":"))
        .reduce((o, [key, value]) => {
            o[key] = value;
            return o;
        }, {});
    
    console.log(model);
    console.log(model.统一代码);
    支持 0 反对 0 举报
    2022-01-16 14:17