first - Convertir cadena a camelCase de TitleCase C#
first letter uppercase c# (4)
Aquí está mi código, en caso de que sea de utilidad para alguien.
// 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 última línea cambia primero de caracteres a mayúsculas, pero puede cambiar a minúsculas, o lo que quiera.
Tengo una cadena que convertí a TextInfo.ToTitleCase y quité los guiones bajos y uní la cadena. Ahora necesito cambiar el primer y solo el primer carácter de la cadena a minúsculas y, por alguna razón, no puedo averiguar cómo lograrlo. Gracias de antemano por la ayuda.
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();
}
}
Resultados: ZebulansNightmare
Resultados Deseados: zebulansNightmare
ACTUALIZAR:
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();
}
}
Produce la salida deseada.
Implementé la respuesta de Bronumski en un método de extensión (sin reemplazar los guiones bajos).
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;
}
}
y para usarlo:
string input = "ZebulansNightmare";
string output = input.ToCamelCase();
Solo necesitas bajar el primer char en la matriz. Ver esta answer
Char.ToLowerInvariant(name[0]) + name.Substring(1)
Como nota al margen, como está eliminando espacios, puede reemplazar el guión bajo con una cadena vacía.
.Replace("_", string.Empty)
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);}