83 votes

Convertir une chaîne en camelCase à partir de TitleCase C #

J'ai une chaîne que j'ai convertie en TextInfo.ToTitleCase et supprimé les traits de soulignement et joint la chaîne ensemble. Maintenant, je dois changer le premier et uniquement le premier caractère de la chaîne en minuscules et pour une raison quelconque, je ne peux pas comprendre comment l'accomplir. Merci d'avance pour l'aide.

 class Program
{
    static void Main(string[] args)
    {
        string functionName = "zebulans_nightmare";
        TextInfo txtInfo = new CultureInfo("en-us", false).TextInfo;
        functionName = txtInfo.ToTitleCase(functionName).Replace('_', ' ').Replace(" ", String.Empty);
        Console.Out.WriteLine(functionName);
        Console.ReadLine();
    }
}
 

Résultats: ZebulansNightmare

Résultats souhaités: zebulansNightmare

MISE À JOUR:

 class Program
{
    static void Main(string[] args)
    {
        string functionName = "zebulans_nightmare";
        TextInfo txtInfo = new CultureInfo("en-us", false).TextInfo;
        functionName = txtInfo.ToTitleCase(functionName).Replace("_", string.Empty).Replace(" ", string.Empty);
        functionName = $"{functionName.First().ToString().ToLowerInvariant()}{functionName.Substring(1)}";
        Console.Out.WriteLine(functionName);
        Console.ReadLine();
    }
}
 

Produit la sortie souhaitée

125voto

Bronumski Points 5754

Il vous suffit de baisser le premier caractère du tableau. Voir cette réponse

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

En remarque, vu que vous supprimez des espaces, vous pouvez remplacer le trait de soulignement par une chaîne vide.

 .Replace("_", string.Empty)
 

40voto

fabigler Points 3472

Implémentation de la réponse de Bronumski dans une méthode d'extension (sans remplacer les soulignés).

  public static class StringExtension
 {
     public static string ToCamelCase(this string str)
     {                    
         if(!string.IsNullOrEmpty(str) && str.Length > 1)
         {
             return Char.ToLowerInvariant(str[0]) + str.Substring(1);
         }
         return str;
     }
 }
 

et pour l'utiliser:

 string input = "ZebulansNightmare";
string output = input.ToCamelCase();
 

16voto

John Henckel Points 554

Voici mon code, au cas où il serait utile à n'importe qui

     // This converts to camel case
    // Location_ID => LocationId, and testLEFTSide => TestLeftSide

    static string CamelCase(string s)
    {
        var x = s.Replace("_", "");
        if (x.Length == 0) return "Null";
        x = Regex.Replace(x, "([A-Z])([A-Z]+)($|[A-Z])",
            m => m.Groups[1].Value + m.Groups[2].Value.ToLower() + m.Groups[3].Value);
        return char.ToUpper(x[0]) + x.Substring(1);
    }
 

La dernière ligne change le premier caractère en majuscule, mais vous pouvez changer en minuscule, ou ce que vous voulez.

5voto

Kenny Kanp Points 21
public static string ToCamelCase(this string text)
{
    return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(te);
}

public static string ToCamelCase(this string text)
{
    return String.Join(" ", text.Split()
    .Select(i => Char.ToUpper(i[0]) + i.Substring(1)));}

public static string ToCamelCase(this string text) {
  char[] a = text.ToLower().ToCharArray();

    for (int i = 0; i < a.Count(); i++ )
    {
        a[i] = i == 0 || a[i-1] == ' ' ? char.ToUpper(a[i]) : a[i];

    }
    return new string(a);}

1voto

 public static string CamelCase(this string str)  
    {  
      TextInfo cultInfo = new CultureInfo("en-US", false).TextInfo;
      str = cultInfo.ToTitleCase(str);
      str = str.Replace(" ", "");
      return str;
    }
 

Cela devrait fonctionner avec System.Globalization

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X