javascript如何处理这段字符串?

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

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

阅读 2.6k
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"

正则方式

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

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;
}
"统一代码:15235168151332;号码:db872e8ne92;名称:浙江电气科技公司".match(/统一代码:([^;]+)/gi)

["统一代码:15235168151332"]
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.统一代码);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题