简体   繁体   English

如何将字符串拆分为单独的键和值?

[英]How can I split a string into separate keys and values?

I have the following string:我有以下字符串:

myString = "Name:Joe Email:info@domian.com Details: I like Sushi";

I would like to split it out into separate variables like:我想将其拆分为单独的变量,例如:

name = "Joe";
email = "info@domian.com";
details = "I like Sushi";

I tried something like the below, but it didn't account for everything.我尝试了类似下面的方法,但它并没有解决所有问题。

 myString = "Name:Joe Email:info@domian.com Details: I like Sushi"; splitString = myString.split(':'); myName = splitString[1]; myEmail = splitString[2]; myFood = splitString[3]; console.log('Name: ', myName); console.log('Email: ', myEmail); console.log('Food: ', myFood);

I'm wondering if there might be a creative way to do this in JS?我想知道在 JS 中是否可能有一种创造性的方式来做到这一点? Thanks.谢谢。

This will turn your string into an object with key/value pairs using match() and split() .这会将您的字符串转换为 object 使用match()split()键/值对。 You can then access the variables using the object, like obj.name or obj.email .然后,您可以使用 object 访问变量,例如obj.nameobj.email There may be a way to fix my regex so that the .shift() method isn't necessary, but it works nonetheless.可能有一种方法可以修复我的正则表达式,这样就.shift()方法,但它仍然有效。

 let myString = "Name:Joe Email:info@domian.com Details: I like Sushi"; let keys = myString.match(/\w+:/g) let values = myString.split(/\w+:/); values.shift(); // remove first item which is empty let obj = {}; keys.forEach((key, index) => { obj[key.replace(":", "").toLowerCase()] = values[index].trim() }) console.log(obj) // access variables like obj.name or obj.email

Try this:尝试这个:

 myString = "Name:Joe Email:info@domian.com Details: I like Sushi"; splitString = myString.split(':'); myName = splitString[1].split(' ')[0]; myEmail = splitString[2].split(' ')[0]; myFood = splitString[3] console.log(myName); console.log(myEmail); console.log(myFood);

If you want to get rid of the space in front of "I like Sushi":如果要去掉“我喜欢寿司”前面的空格:

details = splitString[3].split(' '); 
myDetails = details[1] +' '+ details[2] +' '+ details[3]; console.log(myDetails);

 var myString = "Name:Joe Email:info@domian.com Details: I like Sushi"; var arr = myString.replace(/:\s/g, ':').split(" "), obj = {}; //.replace(/:\s/g,':') Or.replace(/[:\s]/g,':') whichever works better for (var i = 0; i < arr.length; i++) { var item = arr[i], arr2 = item.split(":"), key = arr2[0].toLowerCase(); obj[key] = arr2[1]; } console.log(obj["email"]); //info@domain.com console.log(obj["details"]); //I like Sushi

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM