C#字符串工具类截取过滤格式判断等
来源: 阅读:897 次 日期:2014-08-20 14:55:12
温馨提示: 小编为您整理了“C#字符串工具类截取过滤格式判断等”,方便广大网友查阅!

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 ///<param name="origStr"> 原始字符串</param>

015 ///<param name="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 /// <param name="origStr"> 原始字符串</param>

048 /// <param name="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 /// <param name="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 /// <param name="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 /// <param name="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 /// <param name="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 /// <param name="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]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)$");

182 }

183 /// <summary>

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

185 /// </summary>

186 /// <param name="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 ///<param name="checkingValue"> 被检测的枚举值</param>

210 ///<param name="expectedValue"> 期望的枚举值</param>

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

212 public static bool CheckFlagsEnumEquals(Enum checkingValue, Enum expectedValue)

213 {

214 int intCheckingValue = Convert.ToInt32(checkingValue);

215 int intExpectedValue = Convert.ToInt32(expectedValue);

216 return (intCheckingValue & intExpectedValue) == intExpectedValue;

217 }

218 }

219}

更多信息请查看IT技术专栏

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map