web-dev-qa-db-fra.com

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

J'ai converti une chaîne en TextInfo.ToTitleCase, puis j'ai supprimé les traits de soulignement et joint la chaîne. Maintenant, je dois changer le premier et le seul premier caractère de la chaîne en minuscules et, pour une raison quelconque, je ne sais pas comment le faire. 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

METTRE À 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 désirée

23
Gabriel_W

Vous devez juste abaisser le premier caractère du tableau. Voir cette répondre

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

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

.Replace("_", string.Empty)
41
Bronumski

Implémenter la réponse de Bronumski dans une méthode d'extension (sans remplacer les caractères de soulignement). 

 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 de l'utiliser:

string input = "ZebulansNightmare";
string output = input.ToCamelCase();
11
Fabian Bigler

Voici mon code, au cas où il serait utile à quiconque

    // 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 passer en minuscule ou à votre guise.

4
John Henckel
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);}
0
Kenny Kanp