129 lines
4.2 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|