/// <summary>
/// 返回包含中文字符的字符串長度。
/// C# 的string.Length中中文字只做1位統計,所以要將其轉換爲2位
/// </summary>
/// <param name="strSource">要統計長度的字符串變量</param>
/// <returns>字符串長度</returns>
public static int GetLength(string strSource)
{
return Encoding.GetEncoding("GB2312").GetBytes(strSource).Length;
}
/// <summary>
/// 左對齊字符串
/// <remarks>
/// 如原始字符串不滿足參數<paramref name="length"/>指定的長度則在<paramref name="objectString"/>指定的原始字符串後補'~'
/// </remarks>
/// </summary>
/// <param name="objectString">原始字符串</param>
/// <param name="length">左對齊後的字符串長度</param>
/// <returns>左對齊後的字符串</returns>
/// <example>
/// 如調用方式爲PadRightString("123",5);
/// 則返回值爲"123~~"
/// </example>
/// <exception cref="InvalidTelegraphStringLengthException">
/// 當參數<paramref name="objectString"/>的長度超出參數<paramref name="length"/>指定的值時拋出
/// </exception>
public static string PadRightString(string objectString, int length)
{
//原始字符串長度,中文字符按2位計
int objectStringLength = GetLength(objectString);
if (objectString == null || objectStringLength > length)
{
throw new InvalidTelegraphStringLengthException();
}
else
{
//需自動填充的長度
int suffixLength = length - objectStringLength;
string sunffix = string.Empty;
//不足位數補"~"
for (int i = 0; i < suffixLength; i++)
{
sunffix += "~";
}
return objectString + sunffix;
}
}
/// <summary>
/// 獲取父頁面URL的參數對應值
/// </summary>
/// <returns></returns>
protected Dictionary<string, string> GetParentQueryString()
{
Dictionary<string, string> dic = new Dictionary<string, string>();
string strParams = Request.UrlReferrer.Query;
if (!string.IsNullOrEmpty(strParams))
{
string[] queryParams = strParams.Substring(1).Split(new char[] { '&' });
for (int i = 0; i < queryParams.Length; i++)
{
dic.Add(queryParams[i].Split(new char[] { '=' })[0], queryParams[i].Split(new char[] { '=' })[1]);
}
}
return dic;
}