Есть ли метод CapitalizeFirstLetter? - PullRequest
8 голосов
/ 14 апреля 2009

Есть ли способ сделать это? Можно ли это сделать с помощью метода расширения?

Я хочу добиться этого:

string s = "foo".CapitalizeFirstLetter();
// s is now "Foo"

Ответы [ 3 ]

18 голосов
/ 14 апреля 2009

Простой метод расширения, который будет использовать первую букву строки. Как указал Карл, это предполагает, что первая буква является правильной для изменения и, следовательно, не является абсолютно безопасной для культуры.

public static string CapitalizeFirstLetter(this String input)
{
    if (string.IsNullOrEmpty(input)) 
        return input;

    return input.Substring(0, 1).ToUpper(CultureInfo.CurrentCulture) +
        input.Substring(1, input.Length - 1);
}

Вы также можете использовать System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase . Функция преобразует первый символ каждое слово в верхний регистр. Поэтому, если ваша строка ввода have fun, результат будет Have Fun.

public static string CapitalizeFirstLetter(this String input)
{
     if (string.IsNullOrEmpty(input)) 
         return input;

     return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(input);
}

См. этот вопрос для получения дополнительной информации.

10 голосов
/ 14 апреля 2009

System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase

Преимущество в том, что он безопасен для культуры.

0 голосов
/ 15 августа 2012

Попробуйте это:

static public string UpperCaseFirstCharacter(this string text) {
    return Regex.Replace(text, "^[a-z]", m => m.Value.ToUpper());
}
...