在Javascript中将字符串转换为标题大小写

在Javascript中将字符串转换为标题大小写,javascript,string,replace,Javascript,String,Replace,我觉得我错过了什么 我有下面这个蛇壳变量大的动物 我想把它变成大动物 所以我运行了这个方法str.replace/[-\uuu]\w/g,g=>g[1] 但是我一直在得到bigAnimal,但是我想保留空格并大写第一个字母,首先用下划线分隔字符串。然后将第一个字母大写 让str=大动物; 设ret=str .分开_ .filterx=>x.length>0 .mapx=>x.charAt0.toUpperCase+x.slice1 参加 console.logret 首先用下划线拆分字符串。然

我觉得我错过了什么

我有下面这个蛇壳变量大的动物 我想把它变成大动物

所以我运行了这个方法str.replace/[-\uuu]\w/g,g=>g[1]


但是我一直在得到bigAnimal,但是我想保留空格并大写第一个字母,首先用下划线分隔字符串。然后将第一个字母大写

让str=大动物; 设ret=str .分开_ .filterx=>x.length>0 .mapx=>x.charAt0.toUpperCase+x.slice1 参加
console.logret 首先用下划线拆分字符串。然后将第一个字母大写

让str=大动物; 设ret=str .分开_ .filterx=>x.length>0 .mapx=>x.charAt0.toUpperCase+x.slice1 参加
console.logret 如果你想坚持使用正则表达式的方法

让str=大动物和更多 让output=str.replace/^\w/g,g=>g[0]。toUpperCase.replace/[-\w/g,g=>+g[1]。toUpperCase.trim;
console.logoutput 如果你想坚持使用正则表达式的方法

让str=大动物和更多 让output=str.replace/^\w/g,g=>g[0]。toUpperCase.replace/[-\w/g,g=>+g[1]。toUpperCase.trim;
console.logoutput 另一个普通正则表达式版本:

常量滴定酶=s=> s、 替换/^*.|+/g,s,c,d=>c?c、 toUpperCase:''+d.toUpperCase 控制台。日志标题为“大动物”
console.log titleCase“\u big\u animal\u\u\u\u与\u more\u节点”另一个普通正则表达式版本:

常量滴定酶=s=> s、 替换/^*.|+/g,s,c,d=>c?c、 toUpperCase:''+d.toUpperCase 控制台。日志标题为“大动物”

console.log titleCase“\u big\u animal\uuuuuuu with\u more\u Nodes”注意,如果第一个字符是下划线或一行中有多个下划线,这将添加一个前导空格。@Scott现在可以了吗?在我看来是这样的。但它增加了足够的复杂性,我可能更喜欢正则表达式版本。不过,这是一个很好的演示,演示了小步骤的简单性!请注意,如果第一个字符是下划线或一行中有多个下划线,这将添加一个前导空格。@Scott现在可以了吗?在我看来是这样。但它增加了足够的复杂性,我可能更喜欢正则表达式版本。不过,这是一个很好的演示,演示了小步骤的简单性!请注意,如果第一个字符是下划线或一行中有多个下划线,这将添加一个前导空格。我没有意识到前导下划线在snake case中是一种东西。但如果这是一个问题,只需在输出上使用.trim。请注意,此答案还包括从kebab case转换而来的转换,这与问题中定义的正则表达式模式更为匹配。是的,我在发布答案后注意到了相同的kebab case备选方案,只是在其中添加了注释,而不是更改代码。相同。我更新了我的答案以包括。修剪感谢观察注意,如果第一个字符是下划线或一行中有多个下划线,这将添加一个前导空格。我没有意识到前导下划线在snake中是一种东西。但如果这是一个问题,只需在输出上使用.trim。请注意,此答案还包括从kebab case转换而来的转换,这与问题中定义的正则表达式模式更为匹配。是的,我在发布答案后注意到了相同的kebab case备选方案,只是在其中添加了注释,而不是更改代码。相同。我更新了我的答案,加入了。修剪谢谢你的观察。注意,这只处理下划线。看看问题中的尝试,我认为正则表达式中的下划线可能应该替换为[-\]。这应该是一个简单的修复方法。在初始替换之前添加toLowerCase也可能是可取的,以使其成为真正的titlecase。否则,您可能会最终使用big_aNIMAL,结果将是big aNIMAL。@Zei:OTOH,“my_HTML_渲染器”将变成“my HTML渲染器”,这也可能会有问题。我想如果这是我们想要的,那么最好将titleCase称为myString.toLowerCase。但是,好主意。这甚至可能与我自己的用例有关。我需要编辑我自己的函数。我可以只使用正则表达式忽略一个大写的单词,然后只对不大写的单词使用小写。可能不会像你的一行那么流畅。请注意,这只处理下划线。看看问题中的尝试,我认为正则表达式中的下划线可能应该替换为[-\]。这应该是一个简单的修复方法。在初始替换之前添加toLowerCase也可能是可取的,以使其成为真正的titlecase。否则,您可能会最终使用big_aNIMAL,结果将是big aNIMAL。@Zei:OTOH,“my_HTML_渲染器”将变成“my HTML渲染器”,这也可能会有问题。我想如果这是我们想要的,那么最好将titleCase称为myString.toLowerCase。但是,好主意。这甚至可能与我自己的用例有关。我需要编辑我自己的f 功能。我可以只使用正则表达式忽略一个大写的单词,然后只对不大写的单词使用小写。但可能不会像你的一行那么流畅。