我目前正在被我的一个系统上显示和输入的所有名称视觉攻击。基本上,用户使用屏幕键盘,并不倾向于整齐地写东西!即约翰史密斯最终以约翰史密斯或约翰史密斯的身份进入。
我想要一种整齐地输入名称并显示它们的方法。我已经编写了一个遍历所有名称的方法并且做到了这一点,但它大约有20行代码并且效率不高。
有没有一种很好的方法来实现这一目标?我试过.ToTitleCase(),但它不适用于像O'Brien和McCarthy这样的案件?有没有什么可以做到这一点,很好吗?我的代码目前基本上都有一个特殊情况列表,如果它们包含特殊情况则会通过并操作它们......虽然这不是世界上最有效的事情。
提前致谢。
答案 0 :(得分:5)
真的重要吗?如果用户不关心他们的名字是全是大写还是小写,那么我建议你也不用担心。
关心他们的名字如何大写的用户可能会小心地输入他们的名字。
如果你开始搞乱大写,那就有可能弄错并冒犯用户。
当然,系统的其他方面需要更多关注......
答案 1 :(得分:2)
正如您已经建议的那样,没有真正简单的方法可以实现这一点,而无需处理总是被名字抛出的特殊情况。
这个问题有几条建议可能对您有所帮助:
How do I capitalize first letter of first name and last name in C#?
答案 2 :(得分:2)
我有一个客户端坚持某种级别的自动格式。 以下代码正确解析了所有以前的海报示例。 我们只运行一次并在表单上设置标志,以便用户IF受挫可以覆盖自动设置。 反馈实际上非常积极。 希望这有助于那里的人。
public string FormalFormat(string inString)
{
string outString = string.Empty;
string _ErrorMessage = string.Empty;
try
{
// Formal Format is made for names and addresses to assure
// proper formatting and capitalization
if (string.IsNullOrEmpty(inString))
{
return string.Empty;
}
inString = inString.Trim();
if (string.IsNullOrEmpty(inString))
{
return string.Empty;
}
// see if this is a word or a series of words
//if(inString.IndexOf(" ") > 0)
//{
// Break out each word in the string.
char[] charSep = { ' ' };
string[] aWords = inString.Split(charSep);
int i = 0;
int CapAfterHyphen = 0;
for (i = 0; i < aWords.Length; i++)
{
string Word = aWords[i].Trim();
CapAfterHyphen = Word.IndexOf("-");
char[] chars = Word.ToCharArray();
if (chars.Length > 3)
{
if (Char.IsLower(chars[1]) && Char.IsUpper(chars[2]))
{
Word = Word.Substring(0, 1).ToUpper() + Word.Substring(1, 1).ToLower() + Word.Substring(2, 1).ToUpper() + Word.Substring(3).ToLower();
}
else
{
Word = Word.Substring(0, 1).ToUpper() + Word.Substring(1).ToLower();
}
}
if (CapAfterHyphen > 0)
{
Word = Word.Substring(0, CapAfterHyphen + 1) + Word.Substring(CapAfterHyphen + 1, 1).ToUpper() + Word.Substring(CapAfterHyphen + 2);
}
if (i > 0)
{
outString += " " + Word;
}
else
{
outString = Word;
}
}
}
catch (Exception e)
{
outString = inString;
_ErrorMessage = e.Message;
}
return outString;
}
答案 3 :(得分:0)
当中国人,日本人,阿拉伯人,希伯来人和来自世界各地的许多人加入你的系统时,就会出现问题......
全球化思考。对爱尔兰人来说已经很难了:P
或许向您的用户展示如何显示名称,他们会更加小心。
答案 4 :(得分:0)
还要考虑到,对于某些文化来说,它的姓氏首先是名字,而不是姓氏。
此外,一些名字不仅仅是两三个字。考虑:
(最后一个是美国原住民名字,没有姓氏。)
答案 5 :(得分:0)
我认为格式很重要。格式错误的名称在列表或信封上看起来很糟糕(至少在我看来)。我总是觉得要正确格式化它们的冲动。它几乎是我的一个痴迷。
所以DanD,这就是我这样做:当用户在我的应用程序中输入他们的全名时,我修剪()所有名称,删除双空格然后格式化所有名称在Proper案件。然后,我会向用户显示名称,并提示如下:“我们是否正确格式化了您的姓名?”并为用户提供纠正格式的机会。在此之后,我只保存名称。 祝好运。