-
-
Save digitalconceptvisuals/79a01a81ed6a31d065e7602600bc1c6e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Text; | |
using ConverterFunction = System.Func<string[], string>; | |
class Angel | |
{ | |
static string camelConverter(string[] words) | |
{ | |
var result = new StringBuilder(); | |
// First word is lower | |
result.Append( | |
words[0] | |
.Trim() | |
.ToLower() | |
); | |
// Subsequent words are Proper case | |
for (var offset = 1; | |
offset < words.Length; | |
offset++) | |
{ | |
// First letter is uppercase | |
result.Append( | |
words[offset] | |
.Substring(0, 1) | |
.ToUpper()); | |
// Rest of the letters are lowercase | |
result.Append( | |
words[offset]. | |
Substring(1). | |
ToLower()); | |
} | |
return result.ToString(); | |
} | |
static string lowerConverter(params string[] words) | |
{ | |
// Accumulate result in StringBuilder | |
var result = new StringBuilder(); | |
// Every word is converted to lower | |
// And concatenated | |
foreach (var word in words) | |
{ | |
result.Append( | |
word | |
.Trim() | |
.ToLower()); | |
} | |
return result.ToString(); | |
} | |
Dictionary<string, ConverterFunction> converters = | |
new Dictionary<string, ConverterFunction> | |
{ | |
{"lower", lowerConverter}, | |
{"camel", camelConverter} | |
}; | |
public string changeCase(string caseType, params string[] words) | |
{ | |
// Sanitize the input | |
caseType = caseType.Trim().ToLower(); | |
ConverterFunction converter; | |
converters.TryGetValue(caseType, out converter); | |
if (converter != null) | |
return converter(words); | |
return null; | |
} | |
public void AddConverter(string caseType, ConverterFunction func) | |
{ | |
converters[caseType] = func; | |
} | |
} | |
class ClientClass | |
{ | |
static string snakeConverter(params string[] words) | |
{ | |
// snake_case_is_separated_by_underscore | |
var result = new StringBuilder(); | |
// Convert each word to lower | |
// and separate using underscore | |
for (var offset = 0; | |
offset < words.Length-1; | |
offset++) | |
{ | |
result.Append( | |
words[offset] | |
.Trim() | |
.ToLower() | |
); | |
result.Append("_"); | |
} | |
// Add the last word without _ | |
result.Append( | |
words[words.Length - 1] | |
.Trim() | |
.ToLower() | |
); | |
return result.ToString(); | |
} | |
static void Main(string[] args) | |
{ | |
var obj = new Angel(); | |
obj.AddConverter("snake", snakeConverter); | |
Console.WriteLine(obj.changeCase("snake", "Two", "Words")); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment