Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理名称(第一个、最后一个)的自动字符大小写?_C#_Regex_User Interface_String Formatting_String Matching - Fatal编程技术网

C# 如何处理名称(第一个、最后一个)的自动字符大小写?

C# 如何处理名称(第一个、最后一个)的自动字符大小写?,c#,regex,user-interface,string-formatting,string-matching,C#,Regex,User Interface,String Formatting,String Matching,可能重复: 我目前处于一个不幸的境地,要求我用正确的字符大小写显示作为批处理过程一部分从各种来源(Excel、Access等)加载的用户名称 例如,如果名称加载为“JOHN DOE”,则应显示为“JOHN DOE” 很明显这很复杂很快,比如麦当劳,奥莱利,勒布朗等等… 当我研究这个问题的时候,我唯一能找到的建议是在所有的帽子里显示姓名,而这个解决方案比麦当劳、奥利利和勒布朗的名字更为合适。我仍然希望我能尽我所能地回到他们之前,“这就是你所能拥有的”。 有没有任何图书馆(开源的或付费的)可以帮助

可能重复:

我目前处于一个不幸的境地,要求我用正确的字符大小写显示作为批处理过程一部分从各种来源(Excel、Access等)加载的用户名称

例如,如果名称加载为“JOHN DOE”,则应显示为“JOHN DOE”

很明显这很复杂很快,比如麦当劳,奥莱利,勒布朗等等…

当我研究这个问题的时候,我唯一能找到的建议是在所有的帽子里显示姓名,而这个解决方案比麦当劳、奥利利和勒布朗的名字更为合适。我仍然希望我能尽我所能地回到他们之前,“这就是你所能拥有的”。 有没有任何图书馆(开源的或付费的)可以帮助解决这个问题?我意识到它很可能不是完美的,但如果它能覆盖95~99%的病例,那就可以了


提前感谢。

您可以查看Perl模块,它正是这样做的

您可以在全球化命名空间中使用TitleCase:

string myName = "JOHN QUINCY PUBLIC"; System.Globalization.CultureInfo cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture; System.Globalization.TextInfo textInfo = cultureInfo.TextInfo; string convertedName = textInfo.ToTitleCase(myName.ToLower()); Console.WriteLine(convertedName); 字符串myName=“JOHN QUINCY PUBLIC”; System.Globalization.CultureInfo CultureInfo=System.Threading.Thread.CurrentThread.CurrentCulture; System.Globalization.TextInfo TextInfo=cultureInfo.TextInfo; string convertedName=textInfo.ToTitleCase(myName.ToLower()); Console.WriteLine(convertedName); 将制作“约翰·昆西公众”


它不会以您想要的方式处理撇号。

尽管这可能无法处理McDonald/LeBron场景……如果没有例外名称词典,任何东西都无法处理McDonald/LeBron场景。通过查看MSDN文章中的注释,这不会处理加载为所有大写的文本,不幸的是,这对我的场景来说毫无用处。。。也许我没有理解,但是上面的代码将“johndoe”更改为“johndoe”(您的示例)。ToTitleCase忽略所有大写单词的奇怪之处是调用ToLower()的原因。哦,我的错,我没有看到“ToLower()”夹在里面。谢谢,这正是我要找的。很明显,它不会处理所有的场景,但我不确定是否有任何可行的方法。至少大多数情况都会被涵盖。