【发布时间】:2021-10-28 20:27:10
【问题描述】:
我正在尝试解析此入站电子邮件 body_text,使其看起来像“员工开始日期”:“2021/09/07”
我正在尝试通过 exReg 输入字符串,但无法正确格式化。有什么建议?我最近更新了我的脚本。
谢谢!
Employee Start Date:
2021/09/07
Employee ID:
123456789
Employee Preferred Name:
John Doe
Employee Company:
Global
var emailObj = {};
try {
var valPairs = body_text;
var regEx = /^(.+):(.+)$/; //Name is everything preceding first :, value everything after.
var valPairs = body_text.split("\n").filter(function (item) {
return regEx.test(item);
});
var matches;
//loop through email body and build object
for (var i = 0; i < valPairs.length; i++) {
matches = valPairs[i].match(regEx);
try {
emailObj[matches[1].toString().trim()] = matches[2].toString().trim(); //Add trimmed name/val to object
} catch (ex) {
gs.error(ex.message);
}
}
} catch (ex) {
gs.error(ex.message);
}
console.log(emailObj)
名称值对需要在同一行上,并且没有换行符。我需要这样的结果。
Employee Start Date: 2021/09/07
Employee ID: 123456789
Employee Preferred Name: John Doe
Employee Company: Global
提前致谢!
【问题讨论】:
-
不要让人猜测当前代码有什么问题。告诉他们。
-
更新了事实。感谢您的提醒。
-
什么是“匹配”,什么会使其验证为真?甚至在做什么验证?
-
由于整个语句是一个字符串,我有一个正则表达式检查:之前的键和:之后的值,如果它在同一行。出于某种原因,我无法在每个名称值对之后换行。一旦看到换行符,valPairs 就会检查验证。如果match = true,它会将所有对象循环到一个json数组中,这样我就可以按键调用对象了。
-
电子邮件字符串没有换行符,所以它永远找不到。另外,不同的键值对之间没有逗号,所以它不会得到你想要的。
标签: javascript arrays json parsing