public static string Replace(Character character, string text) { List<string> words = text.Split(' ').ToList<string>(); List<string> alreadyReplaced = new List<string>(); foreach(string word in words) { if (word.StartsWith("{") && word.EndsWith("}") && !alreadyReplaced.Contains(word)) { text = text.Replace(word, LookupWord(character, word)); alreadyReplaced.Add(word); } } return text; }
private static string LookupWord(Character character, string word) { string replacement = "[REPLACEMENT ERROR]"; bool isMale = (character.Gender.ToUpper() == "BOY" || character.Gender.ToLower() == "MAN" || character.Gender.ToLower() == "M"); switch (word) { case "{NAME}": replacement = character.Name.ToUpper(); break; case "{Name}": replacement = character.Name; break; case "{HIS}": case "{HER}": replacement = isMale ? "HIS" : "HER"; break; case "{his}": case "{her}": replacement = isMale ? "his" : "her"; break; case "{His}": case "{Her}": replacement = isMale ? "His" : "Her"; break; case "{HIM}": replacement = isMale ? "HIM" : "HER"; break; case "{him}": replacement = isMale ? "him" : "her"; break; case "{Him}": replacement = isMale ? "Him" : "Her"; break; case "{HE}": case "{SHE}": replacement = isMale ? "HE" : "SHE"; break; case "{he}": case "{she}": replacement = isMale ? "he" : "she"; break; case "{He}": case "{She}": replacement = isMale ? "He" : "She"; break; case "{BOY}": case "{GIRL}": replacement = isMale ? "BOY" : "GIRL"; break; case "{boy}": case "{girl}": replacement = isMale ? "boy" : "girl"; break; case "{Boy}": case "{Girl}": replacement = isMale ? "Boy" : "Girl"; break; } return replacement; }