【发布时间】:2022-01-14 08:59:36
【问题描述】:
我有这个代码,其中 first-name last-name 的输入将转换为小写,然后每个单词的第一个字母将转换为大写,然后交换位置。
但是,我遇到了一个不便,特殊字符(不确定该术语)没有被处理。
输入:oNdřej rasZka 期望输出:Raszka,Ondřej 我得到了什么:OndŘEj Raszka
OndŘEj 的“ŘE”没有与其他可用的特殊字符一样正确处理,有什么办法解决这个问题吗?
<div>
<textarea cols="50" rows="5" id="fullName" class= ""></textarea>
</div>
<button id="splitName">Click</button>
<div>
<br>
</div>
<div class= "border" id="result"></div>
var splitName = document.getElementById("splitName");
splitName.onclick = function() {
document.getElementById("result").innerHTML = '';
var value = document.getElementById("fullName").value;
//CASE CONVERT//
var value2 = value.toLowerCase();
value2 = value2.replace(/\b./g, function(m){ return m.toUpperCase(); });
value2.split('\n').forEach(fullname => {
var spaceIndex = fullname.indexOf(" ");
var firstname;
var lastname;
if (spaceIndex == -1) {
lastname = fullname;
lastname = "";
} else {
firstname = fullname.substring(0, spaceIndex);
lastname = fullname.substr(spaceIndex + 1);
}
document.getElementById("result").innerHTML += lastname + " " + firstname+ "<br>";
});
};
非常感谢。
【问题讨论】:
-
@SaiKiranKrishnaMurthy 看起来@Ced 试图将多个单词大写,因为它们的变量称为
fullName。答案非常相似,但可能略有不同 -
\b.匹配特殊字符,replace 函数将它们返回为大写。使用/^.|\s./g匹配空格分隔的单词中的第一个字符。如果可以使用另一个单词分隔符,事情会变得更加棘手。
标签: javascript html