【问题标题】:Capitalization Regex to allow for Hyphenated Names允许使用连字符名称的大写正则表达式
【发布时间】:2015-01-07 15:27:36
【问题描述】:

我有这个正则表达式(在某处挖出表格)

return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});

将 Prosson 姓名的第一个字符大写。

它不处理像

这样的连字符名称
melinda-ann smith

然后返回

Melinda-ann Smith

应该是什么时候

Melinda-Ann Smith

正则表达式对我来说是一个非常弱点,...我需要更改什么才能将连字符后的字符大写。

【问题讨论】:

    标签: regex jscript


    【解决方案1】:

    找到解决办法

    str.replace(/\b[\w']+\b/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});

    工作得很好。

    【讨论】:

      【解决方案2】:

      为了使其大写,第一个非大写字母如下:

      '~\b([a-z])~'
      

      它将melinda-ann smith 变为Melinda-Ann Smith

      【讨论】:

        【解决方案3】:

        为此,我建议不要使用此类程序语言,而应使用更多功能和更多可扩展性。

        此功能使常规名称和连字符名称中的第一个字母大写(包括带有'减号'或'连字符' -> [- -])

        const startCase = (string) => 
          _.compact(string.split(' '))
                  .map((word) => word.split(/[-–]/).map(_.capitalize).join('-'))
                  .join(' ') // "melinda-ann smith" -> "Melinda-Ann Smith"
        

        【讨论】:

        • 如果您能解释一下您的代码在做什么以及它如何解决 OP 问题,那就太好了。
        • 此代码使常规名称和连字符名称中的首字母大写(包括带有“减号”或“连字符”-> [- -])。我相信它在功能上更正确 - 然后用 str.replace(....)
        • 你应该编辑你的答案,而不是把细节放在评论中。 Example of a good answer referring the doc
        • 现在好点了吗?
        • 是的,当然最好用代码尽可能多地解释和记录你的答案,即使有时对于有经验的开发人员来说很容易或显而易见,可能初学者仍然喜欢“为什么” .
        猜你喜欢
        • 2023-03-11
        • 1970-01-01
        • 2021-03-14
        • 1970-01-01
        • 2012-08-02
        • 1970-01-01
        • 2016-04-30
        • 2020-01-13
        • 1970-01-01
        相关资源
        最近更新 更多