โดยส่วนตัวฉันลองใช้TextInfo.ToTitleCase
วิธีนี้ แต่ฉันไม่เข้าใจว่าทำไมมันไม่ทำงานเมื่อตัวอักษรทั้งหมดเป็นตัวพิมพ์ใหญ่
แม้ว่าฉันจะชอบฟังก์ชั่น util ที่จัดทำโดยWinston Smithฉันขอมอบฟังก์ชั่นที่ฉันกำลังใช้อยู่:
public static String TitleCaseString(String s)
{
if (s == null) return s;
String[] words = s.Split(' ');
for (int i = 0; i < words.Length; i++)
{
if (words[i].Length == 0) continue;
Char firstChar = Char.ToUpper(words[i][0]);
String rest = "";
if (words[i].Length > 1)
{
rest = words[i].Substring(1).ToLower();
}
words[i] = firstChar + rest;
}
return String.Join(" ", words);
}
เล่นกับสตริงการทดสอบบางอย่าง:
String ts1 = "Converting string to title case in C#";
String ts2 = "C";
String ts3 = "";
String ts4 = " ";
String ts5 = null;
Console.Out.WriteLine(String.Format("|{0}|", TitleCaseString(ts1)));
Console.Out.WriteLine(String.Format("|{0}|", TitleCaseString(ts2)));
Console.Out.WriteLine(String.Format("|{0}|", TitleCaseString(ts3)));
Console.Out.WriteLine(String.Format("|{0}|", TitleCaseString(ts4)));
Console.Out.WriteLine(String.Format("|{0}|", TitleCaseString(ts5)));
ให้ผลลัพธ์ :
|Converting String To Title Case In C#|
|C|
||
| |
||