using System; using System.Collections; using System.Web; namespace SPSolutions { public static class StringUtil { public static string ToString(object objInput, string defaultValue) { if (objInput == null) { return defaultValue; } string text = objInput.ToString(); if (!string.IsNullOrEmpty(text)) { return text; } return defaultValue; } public static string ReplaceDoubleSquareBraceTokens(string subject, Hashtable tokens) { return StringUtil.ReplaceTokens(subject, "[[{0}]]", tokens); } public static string ReplaceSquareBraceTokens(string subject, Hashtable tokens) { return StringUtil.ReplaceTokens(subject, "[{0}]", tokens); } public static string ReplaceCurlyBraceTokens(string subject, Hashtable tokens) { return StringUtil.ReplaceTokens(subject, "{{{0}}}", tokens); } public static string ReplaceTokens(string subject, string tokenFormat, Hashtable tokens) { foreach (DictionaryEntry dictionaryEntry in tokens) { if (dictionaryEntry.Key is string && dictionaryEntry.Value is string) { string token = string.Format(tokenFormat, (string)dictionaryEntry.Key); Hashtable tokenVariants = StringUtil.GetTokenVariants(token); subject = subject.Replace((string)tokenVariants["normal"], (string)dictionaryEntry.Value); subject = subject.Replace((string)tokenVariants["normal_lower"], (string)dictionaryEntry.Value); subject = subject.Replace((string)tokenVariants["normal_upper"], (string)dictionaryEntry.Value); subject = subject.Replace((string)tokenVariants["urlEncoded"], HttpUtility.UrlEncode((string)dictionaryEntry.Value)); subject = subject.Replace((string)tokenVariants["urlEncoded_lower"], HttpUtility.UrlEncode((string)dictionaryEntry.Value)); subject = subject.Replace((string)tokenVariants["urlEncoded_upper"], HttpUtility.UrlEncode((string)dictionaryEntry.Value)); subject = subject.Replace((string)tokenVariants["normal_lower_urlEncoded_lower"], HttpUtility.UrlEncode((string)dictionaryEntry.Value)); subject = subject.Replace((string)tokenVariants["normal_lower_urlEncoded_upper"], HttpUtility.UrlEncode((string)dictionaryEntry.Value)); subject = subject.Replace((string)tokenVariants["normal_upper_urlEncoded_lower"], HttpUtility.UrlEncode((string)dictionaryEntry.Value)); subject = subject.Replace((string)tokenVariants["normal_upper_urlEncoded_upper"], HttpUtility.UrlEncode((string)dictionaryEntry.Value)); subject = subject.Replace((string)tokenVariants["normal_urlEncoded_lower"], HttpUtility.UrlEncode((string)dictionaryEntry.Value)); subject = subject.Replace((string)tokenVariants["normal_urlEncoded_upper"], HttpUtility.UrlEncode((string)dictionaryEntry.Value)); } } return subject; } private static Hashtable GetTokenVariants(string token) { return new Hashtable { { "normal", token }, { "normal_lower", token.ToLowerInvariant() }, { "normal_upper", token.ToUpperInvariant() }, { "urlEncoded", StringUtil.GetUrlEncodedToken(token) }, { "urlEncoded_lower", StringUtil.GetUrlEncodedToken(token).ToLowerInvariant() }, { "urlEncoded_upper", StringUtil.GetUrlEncodedToken(token).ToUpperInvariant() }, { "normal_urlEncoded_lower", token.Replace("%7B", "%7b").Replace("%7D", "%7d").Replace("{", "%7b").Replace("}", "%7d") }, { "normal_urlEncoded_upper", token.Replace("%7b", "%7B").Replace("%7d", "%7D").Replace("{", "%7B").Replace("}", "%7D") }, { "normal_lower_urlEncoded_lower", token.ToLowerInvariant().Replace("%7B", "%7b").Replace("%7D", "%7d").Replace("{", "%7b").Replace("}", "%7d") }, { "normal_lower_urlEncoded_upper", token.ToUpperInvariant().Replace("%7b", "%7B").Replace("%7d", "%7D").Replace("{", "%7B").Replace("}", "%7D") }, { "normal_upper_urlEncoded_lower", token.ToLowerInvariant().Replace("%7B", "%7b").Replace("%7D", "%7d") }, { "normal_upper_urlEncoded_upper", token.ToUpperInvariant().Replace("%7b", "%7B").Replace("%7d", "%7D") } }; } private static string GetUrlEncodedToken(string token) { return HttpUtility.UrlEncode(token); } } }