2014-02-13 6 views
-1

Как я могу сделать первый символ строки в нижнем регистре?Первый символ строчной строчной буквы - C#

Например: ConfigService

И мне нужно, чтобы это было так: configService

+0

Вы проверили это? http://stackoverflow.com/questions/3565015/bestpractice-transform-first-character-of-a-string-into-lower-case – Niklas

+0

http://stackoverflow.com/questions/4135317/make-first-letter- of-a-string-upper-case Вместо 'ToUpper' изменить его на' ToLower'. – Random

+3

Примечание: все, что связано с «первым символом», будет очень опасным, если говорить о чем-либо вне простого юникода. Сочетание диакритики, сопряженных пар и справа налево все это вызовет проблемы –

ответ

6

Это будет работать:

string s = "ConfigService"; 
      if (s != string.Empty && char.IsUpper(s[0])) 
      { 
       s= char.ToLower(s[0]) + s.Substring(1); 
      } 
      Console.WriteLine(s); 
+1

Не забудьте проверить пустые строки. – nima

+0

И строки, содержащие только один символ. – Crono

+0

@nima Я отредактировал его –

7

Один из способов:

string newString = oldString; 
if (!String.IsNullOrEmpty(newString)) 
    newString = Char.ToLower(newString[0]) + newString.Substring(1); 

Для чего это стоит, метод расширения:

public static string ToLowerFirstChar(this string input) 
{ 
    string newString = input; 
    if (!String.IsNullOrEmpty(newString) && Char.IsUpper(newString[0])) 
     newString = Char.ToLower(newString[0]) + newString.Substring(1); 
    return newString; 
} 

Использование:

string newString = "ConfigService".ToLowerFirstChar(); // configService 
+0

Хорошо ли это работает с DBCS? –

+2

@ThorstenDittmar .NET имеет строки Unicode. И символ представляет символ UTF-16 –

+1

@ Сергий Березовский Исправить. Тот же вопрос относится и к суррогатным парам, хотя это не будет правильно обрабатываться (и просто не обрабатывается правильно вообще, в большинстве кодов, которые я видел). – hvd

1

Вы можете попробовать это:

lower = source.Substring(0, 1).ToLower() + source.Substring(1); 
1
string test = "ConfigService"; 
string result = test.Substring(0, 1).ToLower() + test.Substring(1); 
+1

Кроме того, использование метода 'Подстрока' только для получения первого символа кажется чуть-чуть поверх :) – Tarec

1

Я бы просто сделать это:

Char.ToLowerInvariant(yourstring[0]) + yourstring.Substring(1) 

Простой и получает работу.

EDIT:

Похоже this thread была та же идея. :)

1
string FirstLower(string s) 
    { 
     if(string.IsNullOrEmpty(s)) 
      return s; 
     return s[0].ToString().ToLower() + s.Substring(1); 
    } 
1

Используйте эту функцию:

public string GetStringWithFirstCharLowerCase(string value) 
{ 
    if (value == null) throw new ArgumentNullException("value") 
    if (String.IsNullOrWhiteSpace(value)) return value; 

    char firstChar = Char.ToLowerInvariant(value[0]); 

    if (value.Length == 1) return firstChar; 

    return firstChar + value.Substring(1); 
} 

Обратите внимание, что в дальнейшем перегрузка будет необходимо, если требуется поддержка других языков.

1

Это может помочь вам, изменяет первый символ ниже, если она является верхней, а также проверяет нулевые или пустые и только пробельные строки:

string str = "ConfigService"; 
string strResult = !string.IsNullOrWhiteSpace(str) && char.IsUpper(str, 0) ? str.Replace(str[0],char.ToLower(str[0])) : str; 
2
public static string Upper_To_Lower(string text) 
    { 
     if (Char.IsUpper(text[0]) == true) { text = text.Replace(text[0], char.ToLower(text[0])); return text; } 

     return text; 
    } 

    public static string Lower_To_Upper(string text) 
    { 
     if (Char.IsLower(text[0]) == true) { text = text.Replace(text[0], char.ToUpper(text[0])); return text; } 

     return text; 
    } 

Надеется, что это поможет! здесь я сделал два метода, принимающих в качестве параметра любую строку, и вернул строку с первой буквой в верхнем или нижнем регистре в соответствии с методом, который вы будете использовать

Смежные вопросы