"统一代码:15235168151332;号码:db872e8ne92;名称:浙江电气科技公司"
想要把统一代码提出来,格式就是key:value分号分隔,但key的出现有可能不按顺序,这个js要怎么写?
"统一代码:15235168151332;号码:db872e8ne92;名称:浙江电气科技公司"
想要把统一代码提出来,格式就是key:value分号分隔,但key的出现有可能不按顺序,这个js要怎么写?
正则方式
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
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.统一代码);
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答4.9k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决