我正在努力研究如何将字符串转换为没有撇号和空格的驼峰式大小写。到目前为止,这是我的代码:
function toCamelCase(input) {
return input
.toLowerCase()
.replace(/['\W]+(.)?/g, (_, char) => (char ? char.toUpperCase() : ""))
.replace(/^./, (char) => char.toLowerCase());
}
const result2 = toCamelCase("HEy, world");
console.log(result2); // "heyWorld"
const result3 = toCamelCase("Yes, that's my student");
console.log(result3); // "yesThatsMyStudent"
“嘿,世界”有效。问题是它在“是的,那是我的学生”上失败了。我得到“yesThatSMyStudent”而不是“yesThatsMyStudent”。我不知道为什么“that's”中的“s”不是小写。有人可以解释为什么会发生这种情况并指出我正确的方向吗?谢谢。
只需更改正则表达式即可排除撇号。
.replace(/[^a-zA-Z0-9]+(.)?/g, (_, char) => (char ? char.toUpperCase() : "")) // Remove non-alphanumerics and capitalize next character.