【发布时间】:2019-02-08 03:28:50
【问题描述】:
我想转换:
HECHT, WILLIAM
到
Hecht, William
在 C# 中。
有什么优雅的方法吗?
【问题讨论】:
我想转换:
HECHT, WILLIAM
到
Hecht, William
在 C# 中。
有什么优雅的方法吗?
【问题讨论】:
string name = "HECHT, WILLIAM";
string s = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(name.ToLower());
(注意它只适用于从小到大,因此从小写开始)
【讨论】:
ToTitleCase() 是否正确处理“Peter O'Toole”和“Mary Jones-Smith”?
我只想提供一个答案,指出虽然这在理论上看起来很简单,但在实践中正确地将每个人的名字大写可能非常复杂:
无论如何,只是想一想。
【讨论】:
public static string CamelCase(this string s)
{
if (String.IsNullOrEmpty(s))
s = "";
string phrase = "";
string[] words = s.Split(' ');
foreach (string word in words)
{
if (word.Length > 1)
phrase += word.Substring(0, 1).ToUpper() + word.Substring(1).ToLower() + " ";
else
phrase += word.ToUpper() + " ";
}
return phrase.Trim();
}
【讨论】:
我对 Marc 的回答投了赞成票,但这也可以:
string s = Microsoft.VisualBasic.Strings.StrConv("HECHT, WILLIAM", VbStrConv.ProperCase,0);
您需要添加适当的引用,但我很确定它适用于所有上输入。
【讨论】:
我对上面的代码有问题,所以我稍微修改了一下,它工作了。来自智利的问候。好论文。
private void label8_Click(object sender, EventArgs e)
{
nombre1.Text= NOMPROPIO(nombre1.Text);
}
string NOMPROPIO(string s)
{
if (String.IsNullOrEmpty(s))
s = "";
string phrase = "";
string[] words = s.Split(' ');
foreach (string word in words)
{
if (word.Length > 1)
phrase += word.Substring(0, 1).ToUpper() + word.Substring(1).ToLower() + " ";
else
phrase += word.ToUpper() + " ";
}
return phrase.Trim();
}
【讨论】: