StringHelper字符串处理帮助类库大全
SHA1 加密
SHA1加密签名比对
MD5加密
获取时间戳
时间戳转为C#格式时间
计算出请求有效时间 (秒)单位
检测密码是否符合要求
格式化距今时间
生成手机短信验证码
检查字符串中是否包含非法字符
截取长度并转换为HTML
删除所有的html标记
取得所有链接URL
获取所有连接文本
StringHelper帮助类库源码
/// <summary>
/// 开发团队:JsonsTeam
/// 官方主页:http://www.jsons.cn
/// </summary>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Globalization;
using System.Security.Cryptography;
using System.Web;
namespace JsonsUtil.Helper
{
public class StringHelper
{
/// <summary>
/// SHA1 加密
/// </summary>
/// <param name="Source_String">加密串</param>
/// <returns></returns>
public static string SHA1(string Source_String)
{
byte[] StrRes = Encoding.Default.GetBytes(Source_String);
HashAlgorithm iSHA = new SHA1CryptoServiceProvider();
StrRes = iSHA.ComputeHash(StrRes);
StringBuilder EnText = new StringBuilder();
foreach (byte iByte in StrRes)
{
EnText.AppendFormat("{0:x2}", iByte);
}
return EnText.ToString();
}
/// <summary>
/// SHA1加密签名比对
/// </summary>
/// <param name="signature">加密签名</param>
/// <param name="token">由AppId和AppSecret得到的凭据</param>
/// <returns></returns>
public static bool CheckSignature(string signature, string token)
{
string strResult = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(token, "SHA1");
return signature.Equals(strResult, StringComparison.InvariantCultureIgnoreCase);
}
/// <summary>
/// MD5加密
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string MD5string(string str)
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5");
}
/// <summary>
/// MD5加密
/// </summary>
/// <param name="str"></param>
/// <param name="isupper"></param>
/// <returns></returns>
public static string MD5string(string str, bool isupper)
{
string md5string = MD5string(str);
if (isupper)
return md5string.ToUpper();
else
return md5string.ToLower();
}
/// <summary>
/// 获取时间戳
/// </summary>
/// <returns></returns>
public static string GetTimeStamp()
{
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
return Convert.ToInt64(ts.TotalSeconds).ToString();
}
/// <summary>
/// 时间戳转为C#格式时间
/// </summary>
/// <param name="timeStamp">Unix时间戳格式</param>
/// <returns>C#格式时间</returns>
public static DateTime GetStampDateTime(long timeStamp)
{
DateTime time = new DateTime();
try
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = long.Parse(timeStamp "0000000");
TimeSpan toNow = new TimeSpan(lTime);
time = dtStart.Add(toNow);
}
catch
{
time = DateTime.Now.AddDays(-30);
}
return time;
}
///<summary>
/// 计算出请求有效时间 (秒)单位
/// </summary>
/// <param name="dateBegin">开始时间</param>
/// <param name="dateEnd">结束时间</param>
/// <returns>返回(秒)单位,比如: 0.00239秒</returns>
public static double GetcDateDiff(DateTime dateBegin, DateTime dateEnd)
{
double getdiff = 0;
try
{
TimeSpan ts1 = new TimeSpan(dateBegin.Ticks);
TimeSpan ts2 = new TimeSpan(dateEnd.Ticks);
TimeSpan ts3 = ts1.Subtract(ts2).Duration();
getdiff = ts3.TotalSeconds;
}
catch
{
getdiff = 4004;
}
return getdiff;
}
/// <summary>
/// 检测密码是否符合要求(不能为纯数字或纯字母,长度不小于6)
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public static bool PasswordStrengthIsHigh(string password)
{
if (password.Length < 6)
{
return false;
}
Regex reg = new Regex(@"^(([a-zA-Z]*)|(\d*))$");
return !reg.IsMatch(password);
}
/// <summary>
/// 格式化距今时间
/// </summary>
/// <param name="dt">时间</param>
/// <returns>string</returns>
public static string GetElapsedTime(DateTime dt)
{
TimeSpan sp = DateTime.Now - dt;
if (sp.TotalHours <= 1)
{
if (sp.TotalMinutes <= 1)
{
return "1分钟内";
}
else
{
return (int)Math.Ceiling(sp.TotalMinutes) "分钟内";
}
}
else if (sp.TotalDays <= 2)
{
return (int)Math.Ceiling(sp.TotalHours) "小时内";
}
else if (sp.TotalDays < 3)
{
return "三天内";
}
else if (sp.TotalDays < 4)
{
return "四天内";
}
else if (sp.TotalDays < 5)
{
return "五天内";
}
else if (sp.TotalDays < 6)
{
return "六天内";
}
else if (sp.TotalDays < 7)
{
return "一周内";
}
if (dt.Year == DateTime.Now.Year)
{
return dt.ToString("MM-dd");
}
else
{
return dt.ToString("yyyy-MM-dd");
}
}
/// <summary>
/// 生成手机短信验证码
/// </summary>
/// <returns></returns>
public static string GetRandomNumberString()
{
Random theRandomNumber = new Random();
return theRandomNumber.Next(100000, 999999).ToString();
}
#region 常规字符串操作
// 检查字符串是否为空
public static bool IsEmpty(string str)
{
if (str == null || str == "")
return true;
else
return false;
}
//检查字符串中是否包含非法字符
public static bool CheckValidity(string s)
{
string str = s;
if (str.IndexOf("'") > 0 || str.IndexOf("&") > 0 || str.IndexOf("%") > 0 || str.IndexOf(" ") > 0 || str.IndexOf("\"") > 0 || str.IndexOf("=") > 0 || str.IndexOf("!") > 0)
{
return false;
}
else
{
return true;
}
}
/// <summary>
/// 把价格精确至小数点两位
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string TransformPrice(double dPrice)
{
double d = dPrice;
NumberFormatInfo myNfi = new NumberFormatInfo();
myNfi.NumberNegativePattern = 2;
string s = d.ToString("N", myNfi);
return s;
}
public static string TransToStr(float f, int iNum)
{
float fl = f;
NumberFormatInfo myNfi = new NumberFormatInfo();
myNfi.NumberNegativePattern = iNum;
string s = f.ToString("N", myNfi);
return s;
}
/// <summary>
/// 检测含有中文字符串的实际长度
/// </summary>
/// <param name="str">字符串</param>
public static int GetLength(string str)
{
System.Text.ASCIIEncoding n = new System.Text.ASCIIEncoding();
byte[] b = n.GetBytes(str);
int l = 0; // l 为字符串之实际长度
for (int i = 0; i <= b.Length - 1; i )
{
if (b[i] == 63) //判断是否为汉字或全脚符号
{
l ;
}
l ;
}
return l;
}
//截取长度,num是英文字母的总数,一个中文算两个英文
public static string GetLetter(string str, int iNum, bool bAddDot)
{
if (str == null || iNum <= 0) return "";
if (str.Length < iNum && str.Length * 2 < iNum)
{
return str;
}
string sContent = str;
int iTmp = iNum;
char[] arrC;
if (sContent.Length >= iTmp) //防止因为中文的原因使ToCharArray溢出
{
arrC = str.ToCharArray(0, iTmp);
}
else
{
arrC = str.ToCharArray(0, sContent.Length);
}
int i = 0;
int iLength = 0;
foreach (char ch in arrC)
{
iLength ;
int k = (int)ch;
if (k > 127 || k < 0)
{
i = 2;
}
else
{
i ;
}
if (i > iTmp)
{
iLength--;
break;
}
else if (i == iTmp)
{
break;
}
}
if (iLength < str.Length && bAddDot)
sContent = sContent.Substring(0, iLength - 3) "...";
else
sContent = sContent.Substring(0, iLength);
return sContent;
}
public static string GetDateString(DateTime dt)
{
return dt.Year.ToString() dt.Month.ToString().PadLeft(2, '0') dt.Day.ToString().PadLeft(2, '0');
}
//根据指定字符,截取相应字符串
public static string GetStrByLast(string sOrg, string sLast)
{
int iLast = sOrg.LastIndexOf(sLast);
if (iLast > 0)
return sOrg.Substring(iLast 1);
else
return sOrg;
}
public static string GetPreStrByLast(string sOrg, string sLast)
{
int iLast = sOrg.LastIndexOf(sLast);
if (iLast > 0)
return sOrg.Substring(0, iLast);
else
return sOrg;
}
public static string RemoveEndWith(string sOrg, string sEnd)
{
if (sOrg.EndsWith(sEnd))
sOrg = sOrg.Remove(sOrg.IndexOf(sEnd), sEnd.Length);
return sOrg;
}
#endregion 常规字符串操作
#region HTML相关操作
public static string ClearTag(string sHtml)
{
if (sHtml == "")
return "";
string sTemp = sHtml;
Regex re = new Regex(@"(<[^>\s]*\b(\w) \b[^>]*>)|(<>)|( )|(>)|(<)|(&)|\r|\n|\t", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);
return re.Replace(sHtml, "");
}
public static string ClearTag(string sHtml, string sRegex)
{
string sTemp = sHtml;
Regex re = new Regex(sRegex, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);
return re.Replace(sHtml, "");
}
public static string ConvertToJS(string sHtml)
{
StringBuilder sText = new StringBuilder();
Regex re;
re = new Regex(@"\r\n", RegexOptions.IgnoreCase);
string[] strArray = re.Split(sHtml);
foreach (string strLine in strArray)
{
sText.Append("document.writeln(\"" strLine.Replace("\"", "\\\"") "\");\r\n");
}
return sText.ToString();
}
public static string ReplaceNbsp(string str)
{
string sContent = str;
if (sContent.Length > 0)
{
sContent = sContent.Replace(" ", "");
sContent = sContent.Replace(" ", "");
sContent = " " sContent;
}
return sContent;
}
public static string StringToHtml(string str)
{
string sContent = str;
if (sContent.Length > 0)
{
char csCr = (char)13;
sContent = sContent.Replace(csCr.ToString(), "<br>");
sContent = sContent.Replace(" ", " ");
sContent = sContent.Replace(" ", " ");
}
return sContent;
}
//截取长度并转换为HTML
public static string AcquireAssignString(string str, int num)
{
string sContent = str;
sContent = GetLetter(sContent, num, false);
sContent = StringToHtml(sContent);
return sContent;
}
//此方法与AcquireAssignString的功能已经一样,为了不报错,故保留此方法
public static string TranslateToHtmlString(string str, int num)
{
string sContent = str;
sContent = GetLetter(sContent, num, false);
sContent = StringToHtml(sContent);
return sContent;
}
public static string AddBlankAtForefront(string str)
{
string sContent = str;
return sContent;
}
/// <summary>
/// 删除所有的html标记
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string DelHtmlString(string str)
{
string[] Regexs =
{
@"<script[^>]*?>.*?</script>",
@"<(\/\s*)?!?((\w :)?\w )(\w (\s*=?\s*(([""'])(\\[""'tbnr]|[^\7])*?\7|\w )|.{0})|\s)*?(\/\s*)?>",
@"([\r\n])[\s] ",
@"&(quot|#34);",
@"&(amp|#38);",
@"&(lt|#60);",
@"&(gt|#62);",
@"&(nbsp|#160);",
@"&(iexcl|#161);",
@"&(cent|#162);",
@"&(pound|#163);",
@"&(copy|#169);",
@"&#(\d );",
@"-->",
@"<!--.*\n"
};
string[] Replaces =
{
"",
"",
"",
"\"",
"&",
"<",
">",
" ",
"\xa1", //chr(161),
"\xa2", //chr(162),
"\xa3", //chr(163),
"\xa9", //chr(169),
"",
"\r\n",
""
};
string s = str;
for (int i = 0; i < Regexs.Length; i )
{
s = new Regex(Regexs[i], RegexOptions.Multiline | RegexOptions.IgnoreCase).Replace(s, Replaces[i]);
}
s.Replace("<", "");
s.Replace(">", "");
s.Replace("\r\n", "");
return s;
}
/// <summary>
/// 删除字符串中的特定标记
/// </summary>
/// <param name="str"></param>
/// <param name="tag"></param>
/// <param name="isContent">是否清除内容 </param>
/// <returns></returns>
public static string DelTag(string str, string tag, bool isContent)
{
if (tag == null || tag == " ")
{
return str;
}
if (isContent) //要求清除内容
{
return Regex.Replace(str, string.Format("<({0})[^>]*>([\\s\\S]*?)<\\/\\1>", tag), "", RegexOptions.IgnoreCase);
}
return Regex.Replace(str, string.Format(@"(<{0}[^>]*(>)?)|(</{0}[^>] *>)|", tag), "", RegexOptions.IgnoreCase);
}
/// <summary>
/// 删除字符串中的一组标记
/// </summary>
/// <param name="str"></param>
/// <param name="tagA"></param>
/// <param name="isContent">是否清除内容 </param>
/// <returns></returns>
public static string DelTagArray(string str, string tagA, bool isContent)
{
string[] tagAa = tagA.Split(',');
foreach (string sr1 in tagAa) //遍历所有标记,删除
{
str = DelTag(str, sr1, isContent);
}
return str;
}
#endregion HTML相关操作
#region 其他字符串操作
/// <summary>
/// 格式化为版本号字符串
/// </summary>
/// <param name="sVersion"></param>
/// <returns></returns>
public static string SetVersionFormat(string sVersion)
{
if (sVersion == null || sVersion == "") return "";
int n = 0, k = 0;
string stmVersion = "";
while (n < 4 && k > -1)
{
k = sVersion.IndexOf(".", k 1);
n ;
}
if (k > 0)
{
stmVersion = sVersion.Substring(0, k);
}
else
{
stmVersion = sVersion;
}
return stmVersion;
}
/// <summary>
/// 格式化字符串为 SQL 语句字段
/// </summary>
/// <param name="fldList"></param>
/// <returns></returns>
public static string GetSQLFildList(string fldList)
{
if (fldList == null)
return "*";
if (fldList.Trim() == "")
return "*";
if (fldList.Trim() == "*")
return "*";
//先去掉空格,[]符号
string strTemp = fldList;
strTemp = strTemp.Replace(" ", "");
strTemp = strTemp.Replace("[", "").Replace("]", "");
//为防止使用保留字,给所有字段加上[]
strTemp = "[" strTemp "]";
strTemp = strTemp.Replace(',', ',');
strTemp = strTemp.Replace(",", "],[");
return strTemp;
}
public static string GetTimeDelay(DateTime dtStar, DateTime dtEnd)
{
long lTicks = (dtEnd.Ticks - dtStar.Ticks) / 10000000;
string sTemp = (lTicks / 3600).ToString().PadLeft(2, '0') ":";
sTemp = ((lTicks % 3600) / 60).ToString().PadLeft(2, '0') ":";
sTemp = ((lTicks % 3600) % 60).ToString().PadLeft(2, '0');
return sTemp;
}
/// <summary>
/// 在前面补0
/// </summary>
/// <returns></returns>
public static string AddZero(int sheep, int length)
{
return AddZero(sheep.ToString(), length);
}
/// <summary>
/// 在前面补0
/// </summary>
/// <returns></returns>
public static string AddZero(string sheep, int length)
{
StringBuilder goat = new StringBuilder(sheep);
for (int i = goat.Length; i < length; i )
{
goat.Insert(0, "0");
}
return goat.ToString();
}
/// <summary>
/// 简介:获得唯一的字符串
/// </summary>
/// <returns></returns>
public static string GetUniqueString()
{
Random rand = new Random();
return ((int)(rand.NextDouble() * 10000)).ToString() DateTime.Now.Ticks.ToString();
}
//获得干净,无非法字符的字符串
public static string GetCleanJsString(string str)
{
str = str.Replace("\"", "“");
str = str.Replace("'", "”");
str = str.Replace("\\", "\\\\");
Regex re = new Regex(@"\r|\n|\t", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);
str = re.Replace(str, " ");
return str;
}
//获得干净,无非法字符的字符串
public static string GetCleanJsString2(string str)
{
str = str.Replace("\"", "\\\"");
Regex re = new Regex(@"\r|\n|\t", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);
str = re.Replace(str, " ");
return str;
}
#endregion 其他字符串操作
/// <summary>
/// 取得所有链接URL
/// </summary>
/// <param name="html"></param>
/// <returns></returns>
public static string GetAllURL(string html)
{
StringBuilder sb = new StringBuilder();
Match m = Regex.Match(html.ToLower(), "<a href=(.*?)>.*?</a>");
while (m.Success)
{
sb.AppendLine(m.Result("$1"));
m.NextMatch();
}
return sb.ToString();
}
/// <summary>
/// 获取所有连接文本
/// </summary>
/// <param name="html"></param>
/// <returns></returns>
public static string GetAllLinkText(string html)
{
StringBuilder sb = new StringBuilder();
Match m = Regex.Match(html.ToLower(), "<a href=.*?>(1,100})</a>");
while (m.Success)
{
sb.AppendLine(m.Result("$1"));
m.NextMatch();
}
return sb.ToString();
}
}
}
原文链接:StringHelper字符串处理帮助类库大全<一>