配置解析及存储,给定一个字符串,里面为K,V的配置信息,请构造程序将其解析。

配置解析及存储,给定一个字符串,里面为K,V的配置信息,请构造程序将其解析

题目描述

配置解析及存储,给定一个字符串,里面为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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值