Last Updated on 1. September 2021 by Thomas J. Fehr
Vorgaben
- Die Funktion entfernt “-“, “_” und ändert den darauf folgenden Buchstaben auf einen Grossbuchstaben
- Der erste Buchstaben wird nur grossgeschrieben, wenn dieser bereits im Eingabe-String gross ist
Beispiele
calculate_total-price | calculateTotalPrice |
Get_from-weather_api | GetFromWeatherApi |
Meine Lösung
public static string ToCamelCase(string str)
{
return Regex.Replace(str, @"[-_]\w", delegate(Match matches)
{
return matches.ToString().Substring(1).ToUpper();
});
}
Meine optimierte Lösung
Die Regex Anpassung mit zusätzlichen Klammern @”[-_](\w)” – Subexpression ermöglicht es, direkt auf den gesuchten Buchstaben zuzugreifen.
public static string ToCamelCase(string str)
{
return Regex.Replace(str, @"[-_](\w)", delegate (Match matches)
{
return matches.Groups[1].Value.ToUpper();
});
}
Meine zweite optimierte Lösung
Das “Delegate” kann auch mit “Lambda expressions” geschrieben werden.
public static string ToCamelCase(string str)
{
return Regex.Replace(str, @"[-_](\w)",
m => m.Groups[1].Value.ToUpper());
}
Unit-Test
public void ToCamelCaseTest()
{
Assert.AreEqual("calculateTotalPrice",
Snippets.ToCamelCase("calculate_total-price"));
Assert.AreEqual("GetFromWeatherApi",
Snippets.ToCamelCase("Get_from-weather_api"));
}
Nützliches
Tool for building and testing regular expressions on the .NET regex engine: http://regexstorm.net/tester