欢迎来到山村网

C#字符串工具类 截取、过滤、格式判断等

2019-03-02 11:39:39浏览:298 来源:山村网   
核心摘要:  C#字符串工具类,实现的功能包括:判断某值是否在枚举内(位枚举)、将全角数字转换为数字、判断是否为IP、获得当前页面客户端

  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}

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

(责任编辑:豆豆)
下一篇:

C# EmailHelper.cs 邮件发送模块代码

上一篇:

C# MD5 加密解密 DES RC2 3DES AES等软创加密类

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com