展会信息港展会大全

C#字符串工具类 截取、过滤、格式判断等
来源:互联网   发布日期:2016-03-01 13:15:53   浏览:1750次  

导读: C#字符串工具类,实现的功能包括:判断某值是否在枚举内(位枚举)、将全角数字转换为数字、判断是否为IP、获得当前页面客户端的IP、改正sql语句中的转义字符、检测是否是正确的Url、检测是否...

C#字符串工具类,实现的功能包括:判断某值是否在枚举内(位枚举)、将全角数字转换为数字、判断是否为IP、获得当前页面客户端的IP、改正sql语句中的转义字符、检测是否是正确的Url、检测是否符合email格式、SQL字符串过滤、按字节数截取字符串(不带省略号)、按字节数截取字符串(后面加省略号...)等。

view sourceprint?001using System;

002using System.Collections.Generic;

003using System.Linq;

004using System.Text;

005using System.Text.RegularExpressions;

006using System.Web;

007namespace CLB.Utility.CharTools

008{

009 public static class StringHelper

010 {

011 /// <summary>

012 /// 按字节数截取字符串(后面加省略号...)

013 /// </summary>

014 ///<paramname="origStr">

原始字符串</param>

015 ///<paramname="endIndex">

提取前endIdex个字节</param>

016 /// <returns></returns>

017 public static string GetSubString(string origStr, int endIndex)

018 {

019 if (origStr == null || origStr.Length == 0 || endIndex < 0)

020 return "";

021 int bytesCount =System.Text.Encoding.GetEncoding("gb2312").GetByteCount(origStr);

022 if (bytesCount > endIndex)

023 {

024 int readyLength = 0;

025 int byteLength;

026 for (int i = 0; i < origStr.Length; i++)

027 {

028 byteLength =System.Text.Encoding.GetEncoding("gb2312").GetByteCount(new char[] { origStr[i]});

029 readyLength += byteLength;

030 if (readyLength == endIndex)

031 {

032 origStr = origStr.Substring(0, i + 1) + "...";

033 break;

034 }

035 else if (readyLength > endIndex)

036 {

037 origStr = origStr.Substring(0, i) + "...";

038 break;

039 }

040 }

041 }

042 return origStr;

043 }

044 /// <summary>

045 /// 按字节数截取字符串(不带省略号)

046 /// </summary>

047 /// <paramname="origStr">

原始字符串</param>

048 /// <paramname="endIndex">

提取前endIdex个字节</param>

049 /// <returns></returns>

050 public static string GetSub1String(string origStr, int endIndex)

051 {

052 if (origStr == null || origStr.Length == 0 || endIndex < 0)

053 return "";

054 int bytesCount =System.Text.Encoding.GetEncoding("gb2312").GetByteCount(origStr);

055 if (bytesCount > endIndex)

056 {

057 int readyLength = 0;

058 int byteLength;

059 for (int i = 0; i < origStr.Length; i++)

060 {

061 byteLength =System.Text.Encoding.GetEncoding("gb2312").GetByteCount(new char[] { origStr[i]});

062 readyLength += byteLength;

063 if (readyLength == endIndex)

064 {

065 origStr = origStr.Substring(0, i + 1);

066 break;

067 }

068 else if (readyLength > endIndex)

069 {

070 origStr = origStr.Substring(0, i);

071 break;

072 }

073 }

074 }

075 return origStr;

076 }

077 /// <summary>

078 /// SQL字符串过滤

079 ///</summary>

080 /// <paramname="Str"></param>

081 /// <returns></returns>

082 public static bool ProcessSqlStr(string Str)

083 {

084 bool ReturnValue = true;

085 try

086 {

087 if (Str.Trim() != "")

088 {

089 string SqlStr="exec|insert+|select+|delete|update|count|chr|mid|master+

|truncate|char|declare|drop+|drop

+table|creat+|create|*|iframe|script|";

090 SqlStr+="exec+|insert|delete+|update+|count(|count+|chr+|+mid

(|+mid+|+master+|truncate+

|char+|+char(|declare

+|drop+table|creat+table";

091 string[] anySqlStr = SqlStr.Split('|');

092 foreach (string ss in anySqlStr)

093 {

094 if (Str.ToLower().IndexOf(ss) >= 0)

095 {

096 ReturnValue = false;

097 break;

098 }

099 }

100 }

101 }

102 catch

103 {

104 ReturnValue = false;

105 }

106 return ReturnValue;

107 }

108 /// <summary>

109 /// 检测是否符合email格式

110 /// </summary>

111 /// <paramname="strEmail">

要判断的email字符串</param>

112 ///<returns判断结果</returns>

113 public static bool IsValidEmail(string strEmail)

114 {

115 return Regex.IsMatch(strEmail,@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");

116 }

117 /// <summary>

118 /// 检测是否是正确的Url

119 /// </summary>

120 /// <paramname="strUrl">

要验证的Url</param>

121 /// <returns>判断结果</returns>

122 public static bool IsURL(string strUrl)

123 {

124 return Regex.IsMatch(strUrl,@"^(http|https)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{1,10}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$");

125 }

126 /// <summary>

127 /// 检测是否有Sql危险字符

128 /// </summary>

129 /// <paramname="str">

要判断字符串</param>

130 ///<returns>判断结果</returns>

131 public static bool IsSafeSqlString(string str)

132 {

133 return !Regex.IsMatch(str,@"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']");

134 }

135 /// <summary>

136 /// 改正sql语句中的转义字符

137 /// </summary>

138 public static string mashSQL(string str)

139 {

140 string str2;

141 if (str == null)

142 {

143 str2 = "";

144 }

145 else

146 {

147 str = str.Replace("\'", "'");

148 str2 = str;

149 }

150 return str2;

151 }

152 /// <summary>

153 /// 获得当前页面客户端的IP

154 /// </summary>

155 /// <returns>当前页面客户端的IP</returns>

156 public static string GetIP()

157 {

158 string result = String.Empty;

159 result =HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

160 if (null == result || result == String.Empty)

161 {

162 result =HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

163 }

164 if (null == result || result == String.Empty)

165 {

166 result = HttpContext.Current.Request.UserHostAddress;

167 }

168 if (null == result || result == String.Empty || !IsIP(result))

169 {

170 return "0.0.0.0";

171 }

172 return result;

173 }

174 /// <summary>

175 /// 是否为ip

176 ///</summary>

177 /// <paramname="ip"></param>

178 /// <returns></returns>

179 public static bool IsIP(string ip)

180 {

181 return Regex.IsMatch(ip,@"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");

182 }

183 /// <summary>

184 /// 将全角数字转换为数字

185 /// </summary>

186 /// <paramname="SBCCase"></param>

187 /// <returns></returns>

188 public static string SBCCaseToNumberic(string SBCCase)

189 {

190 char[] c = SBCCase.ToCharArray();

191 for (int i = 0; i < c.Length; i++)

192 {

193 byte[] b = System.Text.Encoding.Unicode.GetBytes(c, i, 1);

194 if (b.Length == 2)

195 {

196 if (b[1] == 255)

197 {

198 b[0] = (byte)(b[0] + 32);

199 b[1] = 0;

200 c[i] = System.Text.Encoding.Unicode.GetChars(b)[0];

201 }

202 }

203 }

204 return new string(c);

205 }

206 /// <summary>

207 /// 判断某值是否在枚举内(位枚举)

208 /// </summary>

209 ///<paramname="checkingValue">

被检测的枚举值</param>

210 ///<paramname="expectedValue">

期望的枚举值</param>

211 /// <returns>是否包含</returns>

212 public static bool CheckFlagsEnumEquals(Enum checkingValue, EnumexpectedValue)

213 {

214 int intCheckingValue = Convert.ToInt32(checkingValue);

215 int intExpectedValue = Convert.ToInt32(expectedValue);

216 return (intCheckingValue & intExpectedValue) ==intExpectedValue;

217 }

218 }

219}

注:更多精彩文章请关注编程教程栏目。

赞助本站

人工智能实验室

相关热词: 开发 编程 android

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港