C#中有一个本地正确的案例string函数?
我正要写我自己的C#扩展名将string转换为正确的情况下(即大写每个单词的第一个字母),然后我想知道是否没有一个本地的C#function做到这一点…是吗?
有一个function是大写的第一个字母的单词 ,虽然你应该看到备注部分,因为它有一些限制,可能使它不适合你的需要。
String s = "yOu caN Use thIs" s = System.Threading.Thread.CurrentThread .CurrentCulture.TextInfo.ToTitleCase(s.ToLower());
我可以看到的主要限制是它不是“真实的”标题情况。 即在“WaR and PeaCe”这个短语中,“和”部分应该用英文小写。 这个方法将会大写。
你可以在Stingtypes中添加一些扩展方法:
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()); } }
这工作
public static string ConvertTo_ProperCase(string text) { TextInfo myTI = new CultureInfo("en-US", false).TextInfo; return myTI.ToTitleCase(text.ToLower()); }
这应该工作。
public static string ToTitleCase(this string strX) { string[] aryWords = strX.Trim().Split(' '); List<string> lstLetters = new List<string>(); List<string> lstWords = new List<string>(); foreach (string strWord in aryWords) { int iLCount = 0; foreach (char chrLetter in strWord.Trim()) { if (iLCount == 0) { lstLetters.Add(chrLetter.ToString().ToUpper()); } else { lstLetters.Add(chrLetter.ToString().ToLower()); } iLCount++; } lstWords.Add(string.Join("", lstLetters)); lstLetters.Clear(); } string strNewString = string.Join(" ", lstWords); return strNewString; }