Taylohtio/AlertManager/SPSolutions.SharePoint.Aler.../SPSolutions.Common/SPSolutions/StringUtil.cs

129 lines
4.2 KiB
C#

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);
}
}
}