javascript - 解析名称值对的字符串
问题描述
我正在尝试解析此入站电子邮件 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
提前致谢!
解决方案
这是一个更好地格式化html的示例。它还将它从 JSON 字符串解析为一个 jS 对象。
const email = "Employee Start Date:<br> <br> 2021/09/07 <br> <br> Employee ID:<br> <br> 123456789 <br> <br> Employee Preferred Name:<br> <br> John Doe <br> <br> Employee Company: <br> <br> Global<br> <br>"
function extractData(str) {
str = str.replace(/(:\s*(?:<br>\s*)+)/gm, '": "');
str = str.replace(/(\s*(?:<br>\s*)+)/gm, '", "');
str = str.replace(/(,\s*"$)/gm, '}');
str = str.replace(/(^)/gm, '{"');
return JSON.parse(str)
}
console.log(extractData(email))
推荐阅读
- user-interface - 更改组合框中的字符串选项
- angularjs - Angularjs 应用程序无法在 chromedriver 75 及更高版本启动的 chrome 76 上正确加载 UI
- excel - SSIS 不会为动态 xlsx 文件名执行 foreach 循环
- react-native - 运行 Xcode iOS 模拟器时出现 Expo 错误:模拟器中没有可用的 iPhone 设备
- java - 更改android应用程序自适应drawable?
- javascript - 如何将数据从 Vue.js 传递到 Blade 视图?
- vim - vi/vim remap 或 unmap 内置命令 - 可视模式下的 u 键
- python - 如何自定义 django-ratelimit 403 禁止页面?
- javascript - javascript中如何实现字符串和连接?
- android - WorkManager OneTimeWorkRequest 不工作