Я собирался написать собственное расширение С#, чтобы преобразовать строку в Proper Case (например, заглавную первую букву каждого слова), затем я задавался вопросом, не существует ли на месте С# -функция только что... есть?
Есть ли в С# встроенная функция строкового ввода?
Ответ 1
Есть функция, которая заглавная буквами первых букв, хотя вы должны увидеть раздел замечаний, поскольку у него есть некоторые ограничения, которые могут он не подходит для ваших нужд.
Ответ 2
String s = "yOu caN Use thIs"
s = System.Threading.Thread.CurrentThread
.CurrentCulture.TextInfo.ToTitleCase(s.ToLower());
Основное ограничение, которое я вижу в этом, заключается в том, что это не "истинный" заголовок. т.е. во фразе "WaR aNd peaCe", "и" часть должна быть строчной на английском языке. Этот метод мог бы использовать его в капитале.
Ответ 3
вы можете просто добавить некоторые методы расширения к типу Sting:
public static class StringExtension
{
/// <summary>
/// Use the current thread 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());
}
}
Ответ 4
Это работает
public static string ConvertTo_ProperCase(string text)
{
TextInfo myTI = new CultureInfo("en-US", false).TextInfo;
return myTI.ToTitleCase(text.ToLower());
}
Ответ 5
Это должно работать.
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;
}