我有一个应用程序,用户输入他们的名字,通常是国际格式(例如SarahGrüße)。我想在用户输入错误时由于懒惰或不同的国际惯例而修复用户姓名的大小写。
有些用户根本没有大写他们的名字(例如mario bel
)。在这种情况下,我想大写第一个和最后一个名字的第一个字母(这是DB中的不同列)。因此结果将是Mario Bel
。
有些用户(通常是法语用户)完全将他们的姓氏大写,但这不符合我们想要显示他们名字的方式。例如,Baptist ALBERT
应该变为Baptist Albert
。
有些名称正确地有多个大写字母,因此如果名称不是ALL CAPS或全部小写,我想保留原样。例如McDonald
或von Ramstein
。
UTF-8中的某些字符显然没有大写字母,因此这些名称也保持不变。 (例如日文名称。)
所以我认为我需要的是一种方法来检测名称是全部大写还是小写,包括非拉丁区大小写的字符,如Ü/ü
,并忽略非拉丁非区分大小写的字符比如ß
。然后一旦检测到,将这两种情况正确地改为First Letter Capitalized。