【发布时间】:2017-08-17 23:02:36
【问题描述】:
我有一个应用程序,用户可以在其中输入名字和姓氏。我们希望应用程序将输入的任何名称转换为全大写或全小写,或两者的混合,将首字母大写,其余小写。但是,如果名称中有空格、连字符或撇号,则它们后面的第一个字母要大写。
我有以下 java 脚本代码可以很好地处理上述问题:
name = name.replace(/\b\w+/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
但是,此外,我们不希望将输入为“McIntire”或“MacDonald”、“LaToya”或“LeeAnn”的名称转换为“Mcintire”、“Macdonald”、“Latoya”或“ Latoya”或“Leeann”。对于这样的名称,上面的正则表达式并没有做我们想要的。我知道您无法处理名称中间合法混合大写和小写字母的所有情况,但通常将第三个或第四个字母在名称中大写。因此,我们希望 java 脚本或正则表达式不将第三或第四位的大写字母更改为小写字母,同时仍按照上述正则表达式和函数转换其余部分。我意识到这将允许人们像 JoHn 或 WilLiam 那样混合大小写并让它保持这种状态,但是,我们无法处理用户可能做的所有愚蠢的事情,我们必须接受这样的事情。如果我们能够处理第三个或第四个字母大写的非常常见的情况,那就足够了。
因此,总而言之,如果有人可以提供 java 脚本来执行我上面的语句所做的事情,并且不将用户输入的第三个或第四个字母作为大写字母更改为小写,我将不胜感激。
【问题讨论】:
-
您发布了不应转换的示例性单词。贴出应该转换的词
-
在你开始弄乱别人的名字之前,你应该阅读“Falsehoods Programmers Believe About Names”——另外,我认识一个姓 “Dell'Erba” 的人,你的“第三个或第四”规则将失败。
标签: javascript regex string