没有逗号分隔符时将字符串转换为对象

时间:2019-07-01 02:37:26

标签: javascript string object

我有一个字符串

string = "name: my name 
           email: myemail
           address: my address";

这将由用户粘贴。
现在我要它转换成这样的对象

obj = {"name":"my name", "email":"myemail", "address":"my address"}

如何在JS中做到这一点?

我已经尝试过了 String to object in JS 但这仅在有逗号分隔符时有效。

3 个答案:

答案 0 :(得分:0)

解决此问题的最简单方法是将其压缩在萌芽状态-发送对象而不是字符串。如果不可能,请在多行字符串上使用splitreduce

const string = `name: my name 
email: myemail
address: my address`;
const res = string.split("\n").map(e => e.split(":").map(f => f.trim())).reduce((a, [k, v]) => ({ ...a, [k]: v }), {});
console.log(res);

答案 1 :(得分:0)

您可以使用ECMAScript 2019 Object.fromEntries()函数:

const string = "name: my name\nemail: myemail\naddress: my address";

const object = Object.fromEntries(string.split(/\n/).map(s => s.split(/: /)));

console.log(object);

答案 2 :(得分:0)

听起来有点像编码挑战:)

def flag_nonword(w):
    input_len = len(w)+3
    tokens_ext = tokens.loc[tokens['len'] < input_len] 
    return list(tokens.iloc[:,0].iloc[:6])