C#中是否有原生的正确案例字符串函数?

Sha*_*ica 38 c# string

我正要编写自己的C#扩展来将字符串转换为Proper Case(即将每个单词的第一个字母大写),然后我想知道是否没有本地C#函数来做那个......是吗?

Jam*_*xon 67

String s  = "yOu caN Use thIs"

s = System.Threading.Thread.CurrentThread
           .CurrentCulture.TextInfo.ToTitleCase(s.ToLower());
Run Code Online (Sandbox Code Playgroud)

我可以看到的主要限制是它不是"真正的"标题案例.即在短语"WaR aNd peaCe"中,"和"部分应为英文小写.尽管如此,这种方法仍可以利用它.

  • 在原始版本之后片刻发布答案的下注?当接受的答案被公布时,我仍在写我的答案.! (24认同)
  • Upvote - 实际上提供了答案,而接受的答案只是一个链接.非常感激! (14认同)

Gre*_*ech 37

有一个函数可以将单词的第一个字母大写,但是你应该看到备注部分,因为它有一些限制,可能使它不适合你的需要.

  • @midspace - 正如我所说,是的,有一个函数,但你应该阅读备注部分.这种边缘情况明确地在那里被调用. (6认同)
  • @midspace也许这有点矫枉过正,但我​​决定用`Regex.Replace(input.ToLower(),@"\ b [az]",m => m.Value.ToUpper())滚动自己. (6认同)
  • 但它没有适当的案例例如"o'riley"到"O'Riley",反而产生了"O'riley". (2认同)

Tot*_*eRo 11

你可以在Sting类型中添加一些扩展方法:

public static class StringExtension
{
    /// <summary>
    /// Use the current thread's culture info for conversion
    /// </summary>
    public static string ToTitleCase(this string str)
    {
        var cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
        return cultureInfo.TextInfo.ToTitleCase(str.ToLower());
    }

    /// <summary>
    /// Overload which uses the culture info with the specified name
    /// </summary>
    public static string ToTitleCase(this string str, string cultureInfoName)
    {
        var cultureInfo = new CultureInfo(cultureInfoName);
        return cultureInfo.TextInfo.ToTitleCase(str.ToLower());
    }

    /// <summary>
    /// Overload which uses the specified culture info
    /// </summary>
    public static string ToTitleCase(this string str, CultureInfo cultureInfo)
    {
        return cultureInfo.TextInfo.ToTitleCase(str.ToLower());
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 9

这有效

public static string ConvertTo_ProperCase(string text) 
{
    TextInfo myTI = new CultureInfo("en-US", false).TextInfo;
    return myTI.ToTitleCase(text.ToLower());
}      
Run Code Online (Sandbox Code Playgroud)