這個問題在這里已經有了答案: 將字串轉換為標題大小寫 23 個答案 14 小時前關閉。
我試圖弄清楚如何將輸入名稱排序為正確的大寫,例如:tim jAmes = Tim James
我已經將它整理到我可以輸入名稱的位置,但是整理一直在我的腦海中,對 c# 還不是很熟悉,但我需要這個來進行我正在做的測驗。
這是我現有的代碼:
Console.WriteLine("What is your name?");
var str = Console.ReadLine();
Console.WriteLine("Hello there, " str);
uj5u.com熱心網友回復:
這是一個簡單的方法:
Console.WriteLine("What is your name?");
var str = Console.ReadLine();
TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;
str = textInfo.ToTitleCase(str);
Console.WriteLine("Hello there, " str); //Hello there, Tim James
只要確保你包括:using System.Globalization;在頂部
uj5u.com熱心網友回復:
您可以使用類的靜態方法來滾動自己的char。
這個想法是只大寫前面有空格的字符。這是一種天真的方法,但修補起來很有趣。
var input = "TIM JAMES";
var output = "";
var thisChar = ' ';
var shouldCapitalize = true;
for (int i = 0; i < input.Length; i )
{
thisChar = input[i];
if (char.IsWhiteSpace(thisChar))
{
shouldCapitalize = true;
}
else
{
if (shouldCapitalize)
{
thisChar = char.ToUpper(thisChar);
shouldCapitalize = false;
}
else
{
thisChar = char.ToLower(thisChar);
}
}
output = thisChar;
}
Console.WriteLine("Hello there, " output);
uj5u.com熱心網友回復:
這不能可靠地完成,因為只有許多不同型別的名稱不遵循基本規則,第一個字母是大寫字母,后跟小寫字母。一個例子是尼爾·德格拉斯·泰森。
您可以按照其他人的建議嘗試ToTitleCase- 這甚至包括 ,但如果您將其作為學習編程的練習,您可以回到基礎并嘗試使用 Split 和 ToLower 和 ToUpper:
using System.Globalization;
var name = "tim jAmes";
Console.WriteLine($"{name} => {FixName(name)}");
string FixName(string name)
{
var culture = new CultureInfo(name: "en-US", useUserOverride: false);
if( name.ToLower() == "Neil deGrasse Tyson".ToLower())
{
return "Neil deGrasse Tyson"; // ;)
}
var parts = name.Split(" ");
var fixedParts = new List<string>();
foreach(var part in parts)
{
var fixedPart = char.ToUpper(part[0], culture)
part.Substring(startIndex: 1).ToLower(culture);
fixedParts.Add(fixedPart);
}
var fixedName = string.Join(" ", fixedParts);
return fixedName;
}
這列印:
tim jAmes => Tim James
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/454316.html
