public static IDictionary<String, String> SplitAsDictionary(this String value, String nameValueSeparator = "=", String separator = ";", Boolean trimQuotation = false)
{
var dic = new NullableDictionary<String, String>(StringComparer.OrdinalIgnoreCase);
if (value.IsNullOrWhiteSpace()) return dic;
if (nameValueSeparator.IsNullOrEmpty()) nameValueSeparator = "=";
//if (separator == null || separator.Length < 1) separator = new String[] { ",", ";" };
var ss = value.Split(new[] { separator }, StringSplitOptions.RemoveEmptyEntries);
if (ss == null || ss.Length < 1) return null;
foreach (var item in ss)
{
var p = item.IndexOf(nameValueSeparator);
if (p <= 0) continue;
var key = item.Substring(0, p).Trim();
var val = item.Substring(p + nameValueSeparator.Length).Trim();
// 处理单引号双引号
if (trimQuotation)
{
if (val[0] == '\'' && val[val.Length - 1] == '\'') val = val.Trim('\'');
if (val[0] == '"' && val[val.Length - 1] == '"') val = val.Trim('"');
}
dic[key] = val;
}
return dic;
}