1 /// <summary>
2 /// 返回包含中文字符的字符串长度。
3 /// C# 的string.Length中中文字只做1位统计,所以要将其转换为2位
4 /// </summary>
5 /// <param name="strSource">要统计长度的字符串变量</param>
6 /// <returns>字符串长度</returns>
7 public static int GetLength(string strSource)
8 {
9 return Encoding.GetEncoding("GB2312").GetBytes(strSource).Length;
10 }
11 /// <summary>
12 /// 左对齐字符串
13 /// <remarks>
14 /// 如原始字符串不满足参数<paramref name="length"/>指定的长度则在<paramref name="objectString"/>指定的原始字符串后补'~'
15 /// </remarks>
16 /// </summary>
17 /// <param name="objectString">原始字符串</param>
18 /// <param name="length">左对齐后的字符串长度</param>
19 /// <returns>左对齐后的字符串</returns>
20 /// <example>
21 /// 如调用方式为PadRightString("123",5);
22 /// 则返回值为"123~~"
23 /// </example>
24 /// <exception cref="InvalidTelegraphStringLengthException">
25 /// 当参数<paramref name="objectString"/>的长度超出参数<paramref name="length"/>指定的值时抛出
26 /// </exception>
27 public static string PadRightString(string objectString, int length)
28 {
29 //原始字符串长度,中文字符按2位计
30 int objectStringLength = GetLength(objectString);
31 if (objectString == null || objectStringLength > length)
32 {
33 throw new InvalidTelegraphStringLengthException();
34 }
35 else
36 {
37 //需自动填充的长度
38 int suffixLength = length - objectStringLength;
39 string sunffix = string.Empty;
40 //不足位数补"~"
41 for (int i = 0; i < suffixLength; i++)
42 {
43 sunffix += "~";
44 }
45 return objectString + sunffix;
46 }
47 }
48 /// <summary>
49 /// 获取父页面URL的参数对应值
50 /// </summary>
51 /// <returns></returns>
52 protected Dictionary<string, string> GetParentQueryString()
53 {
54 Dictionary<string, string> dic = new Dictionary<string, string>();
55 string strParams = Request.UrlReferrer.Query;
56 if (!string.IsNullOrEmpty(strParams))
57 {
58 string[] queryParams = strParams.Substring(1).Split(new char[] { '&' });
59 for (int i = 0; i < queryParams.Length; i++)
60 {
61 dic.Add(queryParams[i].Split(new char[] { '=' })[0], queryParams[i].Split(new char[] { '=' })[1]);
62 }
63 }
64 return dic;
65 }
2 /// 返回包含中文字符的字符串长度。
3 /// C# 的string.Length中中文字只做1位统计,所以要将其转换为2位
4 /// </summary>
5 /// <param name="strSource">要统计长度的字符串变量</param>
6 /// <returns>字符串长度</returns>
7 public static int GetLength(string strSource)
8 {
9 return Encoding.GetEncoding("GB2312").GetBytes(strSource).Length;
10 }
11 /// <summary>
12 /// 左对齐字符串
13 /// <remarks>
14 /// 如原始字符串不满足参数<paramref name="length"/>指定的长度则在<paramref name="objectString"/>指定的原始字符串后补'~'
15 /// </remarks>
16 /// </summary>
17 /// <param name="objectString">原始字符串</param>
18 /// <param name="length">左对齐后的字符串长度</param>
19 /// <returns>左对齐后的字符串</returns>
20 /// <example>
21 /// 如调用方式为PadRightString("123",5);
22 /// 则返回值为"123~~"
23 /// </example>
24 /// <exception cref="InvalidTelegraphStringLengthException">
25 /// 当参数<paramref name="objectString"/>的长度超出参数<paramref name="length"/>指定的值时抛出
26 /// </exception>
27 public static string PadRightString(string objectString, int length)
28 {
29 //原始字符串长度,中文字符按2位计
30 int objectStringLength = GetLength(objectString);
31 if (objectString == null || objectStringLength > length)
32 {
33 throw new InvalidTelegraphStringLengthException();
34 }
35 else
36 {
37 //需自动填充的长度
38 int suffixLength = length - objectStringLength;
39 string sunffix = string.Empty;
40 //不足位数补"~"
41 for (int i = 0; i < suffixLength; i++)
42 {
43 sunffix += "~";
44 }
45 return objectString + sunffix;
46 }
47 }
48 /// <summary>
49 /// 获取父页面URL的参数对应值
50 /// </summary>
51 /// <returns></returns>
52 protected Dictionary<string, string> GetParentQueryString()
53 {
54 Dictionary<string, string> dic = new Dictionary<string, string>();
55 string strParams = Request.UrlReferrer.Query;
56 if (!string.IsNullOrEmpty(strParams))
57 {
58 string[] queryParams = strParams.Substring(1).Split(new char[] { '&' });
59 for (int i = 0; i < queryParams.Length; i++)
60 {
61 dic.Add(queryParams[i].Split(new char[] { '=' })[0], queryParams[i].Split(new char[] { '=' })[1]);
62 }
63 }
64 return dic;
65 }