在javascript中大写名称
Capitalize Names in javascript
本文关键字:javascript 更新时间:2023-09-26
我有一个函数大写的句子。但是它不能大写名字,比如
D'agostino, Fred
D'agostino, Ralph B.
D'allonnes, C. Revault
D'amanda, Christopher
我在等:
D'Agostino, Fred
D'Agostino, Ralph B.
D'Allonnes, C. Revault
D'Amanda, Christopher
:
getCapitalized(str){
var smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?'.?|via)$/i;
return str.replace(/[A-Za-z0-9'u00C0-'u00FF]+[^'s-]*/g, function (match, index, title) {
if (index > 0 && index + match.length !== title.length &&
match.search(smallWords) > -1 && title.charAt(index - 2) !== ":" &&
(title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') &&
(title.charAt(index + match.length) !== "'" || title.charAt(index - 1) === "'") &&
title.charAt(index - 1).search(/[^'s-]/) < 0) {
return match.toLowerCase();
}
if (match.substr(1).search(/[A-Z]|'../) > -1) {
return match;
}
return match.charAt(0).toUpperCase() + match.substr(1);
});
}
有谁能帮我解决这个问题吗?我试过使用(title.charAt(index + match.length) !== "'" || title.charAt(index - 1) === "'")
,但它没有帮助。 我不确定您需要处理的所有用例,但是对于您问的问题,您可以使用查找单词边界的regex:
function capitalizeName(name) {
return name.replace(/'b('w)/g, s => s.toUpperCase());
}
console.log(capitalizeName(`D'agostino, Fred`));
console.log(capitalizeName(`D'agostino, Ralph B.`));
console.log(capitalizeName(`D'allonnes, C. Revault`));
console.log(capitalizeName(`D'amanda, Christopher`));
我使用这个函数来大写名称。该参数用于强制小写字母大写,否则会得到奇怪的结果(BaLlERinO, LaMbORGhini..)
它使用regexp在[' ' " '中查找空格或特殊字符。-]后面跟着ASCII组0-97和123-223以外的任何字符,因为只有符号、数字和大写字母,但是这个字符不能后面跟着另一个空格或字符串结束(避免像Ciccio那样的结果)
String.prototype.capitalize = function (lower) {
return (lower ? this.toLowerCase() : this).replace(/(?:^|'s|['`‘’.-])[^'x00-'x60^'x7B-'xDF](?!('s|$))/g, function (a) {
return a.toUpperCase();
});
};
console.log(" ëkthor thörsen's örst'ûber o'brian von-fist's".capitalize(true))
// Ëkthor Thörsen's Örst'Ûber O'Brian Von-Fist's
此代码适用于重音字符:
"d'agOstIno, jeAn-franÇois óscar álvarez".toLowerCase().replace(/[A-Za-zÀ-ÖØ-öø-ÿ]+/g, (c) => c[0].toUpperCase() + c.substring(1))
测试:<form>
Input:<br />
<textarea name="input" style="width: 500px" onchange="form.output.value=this.value.toLowerCase().replace(/[A-Za-zÀ-ÖØ-öø-ÿ]+/g, (c) => c[0].toUpperCase() + c.substring(1));" onkeyup="form.output.value=this.value.toLowerCase().replace(/[A-Za-zÀ-ÖØ-öø-ÿ]+/g, (c) => c[0].toUpperCase() + c.substring(1));">d'agOstIno, jeAn-franÇois-óscar álvarez</textarea><br />
Output:<br />
<textarea name="output" style="width: 500px" readonly onclick="select(this)">D'Agostino, Jean-François-Óscar Álvarez</textarea>
</form>
===旧答案:更简单,但只适用于无重音字符===
"d'agOstIno, jeAn-phI".toLowerCase().replace(/'b'w/g, (c) => c.toUpperCase())
<form>
Input:<br />
<textarea name="input" style="width: 500px" onchange="form.output.value=this.value.toLowerCase().replace(/'b'w/g, (c) => c.toUpperCase())" onkeyup="form.output.value=this.value.toLowerCase().replace(/'b'w/g, (c) => c.toUpperCase())">d'agOstIno, jeAn-phiLIpPE</textarea><br /> Output:
<br />
<textarea name="output" style="width: 500px" readonly onclick="select(this)">D'Agostino, Jean-Philippe</textarea>
</form>
const correctTheName = (myName) => {
const nameArray = myName.split(" ");
const correctName = [];
nameArray.forEach((item) => {
const lowerCase = item.toLowerCase();
const fLetter = lowerCase.slice(0, 1).toUpperCase();
const rletters = lowerCase.slice(1, lowerCase.length);
const finalName = fLetter + rletters;
correctName.push(finalName);
});
const theName = correctName.join(" ");
console.log(theName);
};
correctTheName("pervez GHani MasiH");
correctTheName("pervez GHani MasiH shakeel");
correctTheName("elisha");
correctTheName("HaJi shakir ali makhdom chaudary malik");
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在Javascript中将JSon对象转换为数组
- Javascript生成的表单未提交
- 使用javascript将动态表从一个html页面打印到另一个html页
- 通过javascript重定向html传递php变量