题目描述
配置解析及存储,给定一个字符串,里面为K,V的配置信息,请构造程序将其解析。实例字符串为" abc =b\n ;c=\x61d;d=234;t=\n;d=“test;yes”;"。
利用原理
使用状态机思路。
代码实现
let str = "abc=b\\n;c=\\x61d;d=234;t=\\n;d=\"test;yes\";"
function analysis(str) {
let isQuo = false
let temp = 0
let obj = {}
let str1 = ""
let key = ""
let value = ""
for(let i = 0; i < str.length; i++) {
if(str.charAt(i) === '\"') {
isQuo = !isQuo
} else if(!isQuo && (str.charAt(i) === '=')) {
key = str.slice(temp,i)
// console.log(key)
temp = i
} else if (!isQuo && (str.charAt(i) === ';')) {
value = str.slice(temp+1,i)
// console.log(value)
temp = i+1
obj[key] = value
}
}
console.log(obj)
}
analysis(str)
利用原理
利用正则表达式和数组函数等
代码实现
let str = "abc=b\\n;c=\\x61d;d=234;t=\\n;d=\"test;yes\";"
function analysis(str) {
str = str.replace(/=/g,":")
var rx = /(?!;|$)[^;"]*(("[^"]*")[^;"]*)*/g;
var res = str.match(rx)
console.log(res)
for (let i = 0; i< res.length; i++) {
console.log(res[i])
}
let obj = {}
res.forEach(function(item) {
item = item.split(':')
obj[item[0]] = item[1]
})
console.log(obj)
}
analysis(str)