我创建了一个node.js网站,潜在员工可以通过该网站申请工作。当他们提交申请表时,我正在使用nodemailer和mailgun将包含申请人信息的电子邮件发送给招聘经理。它将键值对发送给新申请人的对象,但是我想在包含多个单词的键之间放置一个空格,并使其大写,以使外观更为悦耳。我该怎么办?
这是带有输出键值对的示例电子邮件
这是发送电子邮件的代码
function sendAppliedEmail(applicant) {
let html = '<img src="" alt="logo">';
html += '<h2 style="color: black">New Applicant</h2>'
html += '<ul>';
Object.entries(applicant).forEach(([key, value]) => {
html += `<li>${key}: ${value}</li>`;
});
html += '</ul>';
答案 0 :(得分:2)
replace(/([a-z])([A-Z])/g, `$1 $2`)
您可以替换所有lowerUpper匹配项。
每次小写字符后跟大写字符时,正则表达式都会匹配并用它们自己以及两个字符之间的空格替换这两个字符。
function sendAppliedEmail(applicant) {
let html = '<img src="" alt="logo">';
html += '<h2 style="color: black">New Applicant</h2>'
html += '<ul>';
Object.entries(applicant).forEach(([key, value]) => {
html += `<li>${key.replace(/([a-z])([A-Z])/g, `$1 $2`)}: ${value}</li>`;
});
html += '</ul>';
如果键应该是完整的大写字母,则可以将toUpperCase()
方法链接到replace方法。
html += `<li>${key.replace(/([a-z])([A-Z])/g, `$1 $2`).toUpperCase()}: ${value}</li>`;
答案 1 :(得分:2)
您可以使用replace函数来确定字母是否为大写字母,如果有则返回带有字符的前缀空格,同时确保首个字符大写。
key.replace(/[a-z]/gi, (m, o) => (m < {} && o) ? ` ${m}` : (o) ? m : m.toUpperCase())
您可以通过将字符与{}
进行比较来确定字符是否大写。如果字符小于,则大写;如果字符大于,则小写。这是因为{}
将转换为字符串[object Object]
,并且将比较两个字符代码。经过比较,将仅使用第一个字符(“ [”)。因此"A" < "["
和"A" < {}
是等效的。通过查看其字符代码可以更容易地解释这一点:
"A".charCodeAt(0);
//65
"[".charCodeAt(0);
//91
"a".charCodeAt(0);
//97
(实际上,使用“ [”的性能更高,为了进行优化,您可以将其与之进行比较。记住“ {}”大于大写字母更容易,反之亦然)
在典型的RegEx中,您可以简单地使用[A-Z]
来捕获大写字母,但是要注意的是,如果您想对第一个字符AND太空骆驼字母大写,则除了{{1} } offset
函数中的}参数(将其视为字符串的索引)允许您以唯一的字符串形式进行操作。
replace
下面的代码段无法正常运行,但它应在您的代码中有效:
let splitCase = key => key.replace(/[a-z]/gi, (m, o) => (m < "[" && o) ? ` ${m}` : (o) ? m : m.toUpperCase());
let key = "phoneNumber";
console.log(splitCase(key));
key = "firstName";
console.log(splitCase(key));
答案 2 :(得分:0)
您可以使用正则表达式将它们切在大写字母上。看到以下问题:Javascript Split string on UpperCase Characters