C# 无法获得正确的ToTitleCase

C# 无法获得正确的ToTitleCase,c#,string,C#,String,我尝试了三种方法来为一系列的所有大写字母找到合适的解决方案。 这是我的密码: string testStr = "SYNDEGAARD"; string result1 = UppercaseFirst(testStr); string titleCase = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(testStr); string result2 = titleCase; CultureInfo culture_info = Thr

我尝试了三种方法来为一系列的所有大写字母找到合适的解决方案。
这是我的密码:

string testStr = "SYNDEGAARD";

string result1 = UppercaseFirst(testStr);

string titleCase = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(testStr);
string result2 = titleCase;

CultureInfo culture_info = Thread.CurrentThread.CurrentCulture;
TextInfo text_info = culture_info.TextInfo;
string result3 = text_info.ToTitleCase(testStr);

private static string UppercaseFirst(string s)
{
    // Check for empty string.
    if (string.IsNullOrEmpty(s))
    {
        return string.Empty;
    }
    // Return char and concat substring.
    return char.ToUpper(s[0]) + s.Substring(1);
}
这三个结果都是“Syndengard”。它永远不会变为“Syndengard”

只需更新到这个

return char.ToUpper(s[0]) + s.Substring(1).ToLower();
只要更新到这个

return char.ToUpper(s[0]) + s.Substring(1).ToLower();

无法获得所需结果的原因是,如果输入字符串都是大写字母,则
ToTitleCase()
不起作用

您可以尝试将
SYNDEGAARD
更改为
SYNDEGAARDx
,并查看差异

至于为什么这是默认行为,我不确定

此外,您忘了在此函数中添加
ToLower()
,以确保前面的文本是小写的

    private static string UppercaseFirst(string s)
    {
        // Check for empty string.
        if (string.IsNullOrEmpty(s))
        {
            return string.Empty;
        }
        // Return char and concat substring.
        return char.ToUpper(s[0]) + s.Substring(1).ToLower(); // Missing ToLower()
    }
编辑:

这就是为什么大写文本不会发生任何变化

将指定的字符串转换为标题大小写(不包括 完全大写,被认为是首字母缩略词)


无法获得所需结果的原因是,如果输入字符串都是大写字母,则
ToTitleCase()
不起作用

您可以尝试将
SYNDEGAARD
更改为
SYNDEGAARDx
,并查看差异

至于为什么这是默认行为,我不确定

此外,您忘了在此函数中添加
ToLower()
,以确保前面的文本是小写的

    private static string UppercaseFirst(string s)
    {
        // Check for empty string.
        if (string.IsNullOrEmpty(s))
        {
            return string.Empty;
        }
        // Return char and concat substring.
        return char.ToUpper(s[0]) + s.Substring(1).ToLower(); // Missing ToLower()
    }
编辑:

这就是为什么大写文本不会发生任何变化

将指定的字符串转换为标题大小写(不包括 完全大写,被认为是首字母缩略词)


使用Humanizer,它将为您提供一系列用于转换和操作字符串、枚举、日期、时间、时间跨度、数字和数量的实用程序

Nuget包


使用Humanizer,它将为您提供一系列用于转换和操作字符串、枚举、日期、时间、时间跨度、数字和数量的实用程序

Nuget包


@Slai的可能副本-它不是一个特定的副本。这个问题的答案可以在那里找到,但它们不是同一个问题。可能是@Slai的重复-它不是特别重复的。这个问题的答案可以在那里找到,但它们不是同一个问题。谢谢,托洛尔修好了。谢谢,托洛尔修好了。