扩展了一些String常用的方法.
using System;
using System.Diagnostics;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions; namespace Taolx.JuneAir.Common.Extensions
{ /// <summary>
/// String 扩展类
/// </summary>
public static class StringExtension
{
private static readonly Regex WebUrlExpression = new Regex(@"(http|https)://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?", RegexOptions.Singleline | RegexOptions.Compiled);
private static readonly Regex EmailExpression = new Regex(@"^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$", RegexOptions.Singleline | RegexOptions.Compiled);
private static readonly Regex StripHTMLExpression = new Regex("<\\S[^><]*>", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.CultureInvariant | RegexOptions.Compiled);
private static readonly char[] IllegalUrlCharacters = new[] { ';', '/', '\\', '?', ':', '@', '&', '=', '+', '$', ',', '<', '>', '#', '%', '.', '!', '*', '\'', '"', '(', ')', '[', ']', '{', '}', '|', '^', '`', '~', '–', '‘', '’', '“', '”', '»', '«' };
/// <summary>
/// 默认密钥-密钥的长度必须是32
/// </summary>
private const string PublicKey = "1qaz2wsx3edc4rfv"; /// <summary>
/// 默认向量
/// </summary>
private const string Iv = "abcdefghijklmnop"; /// <summary>
/// 为空或者""
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
public static bool IsNullOrEmpty(this string source)
{
return string.IsNullOrEmpty(source);
} /// <summary>
/// ToTrim
/// </summary>
/// <param name="source"></param>
/// <param name="defalutVal"></param>
/// <returns></returns>
public static string ToTrim(this string source, string defalutVal = "")
{
return (source ?? defalutVal).Trim();
} /// <summary>
/// string类型日期转换成datetiem类型
/// </summary>
/// <param name="str"></param>
/// <returns>转换失败返回null</returns>
public static DateTime? ToNullbaleDateTime(this string str)
{
if (string.IsNullOrEmpty(str))
return null;
DateTime dateTime;
return DateTime.TryParse(str, out dateTime) ? dateTime : (DateTime?)null;
} /// <summary>
/// 将当前字符串从指定索引位置将指定长度的字符替换为新字符
/// </summary>
/// <param name="oldStr">当前字符串</param>
/// <param name="index">替换起始索引位置</param>
/// <param name="length">指定长度</param>
/// <param name="newChar">替换的字符</param>
/// <returns></returns>
public static string ReplaceStr(this string oldStr, int index, int length, char newChar = '*')
{
if (oldStr == null)
return "";
if (index < )
index = ;
if (length > oldStr.Length)
length = oldStr.Length;
string keepStr = oldStr.Substring(length - index, oldStr.Length - length);
return keepStr.PadLeft(oldStr.Length, newChar);
} /// <summary>
/// 获取32位长度的Md5摘要
/// </summary>
/// <param name="input"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public static string Get32Md5(this string input, Encoding encoding = null)
{
if (encoding == null) encoding = Encoding.UTF8;
StringBuilder buff = new StringBuilder();
MD5 md5 = new MD5CryptoServiceProvider();
byte[] t = md5.ComputeHash(encoding.GetBytes(input));
foreach (byte t1 in t)
buff.Append(t1.ToString("x").PadLeft(, ''));
return buff.ToString();
} /// <summary>
/// md5去掉"-"转成string
/// </summary>
public static string ToMD5(this string str)
{
//return System.Security.Cryptography.MD5.Create(str).ToString();
//return FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5"); //System.Security.Cryptography.MD5 md55 = new System.Security.Cryptography.MD5CryptoServiceProvider(); if (string.IsNullOrEmpty(str)) return str;
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
string encoded = BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(str))).Replace("-", "");
return encoded.ToLower();
} /// <summary>
/// 是否为WebUrl地址
/// </summary>
/// <param name="target"></param>
/// <returns></returns>
public static bool IsWebUrl(this string target)
{
return !string.IsNullOrEmpty(target) && WebUrlExpression.IsMatch(target);
} /// <summary>
/// 是否为Email地址
/// </summary>
/// <param name="target"></param>
/// <returns></returns>
public static bool IsEmail(this string target)
{
return !string.IsNullOrEmpty(target) && EmailExpression.IsMatch(target);
} /// <summary>
/// string转Guid
/// </summary>
/// <param name="target"></param>
/// <returns></returns>
public static Guid ToGuid(this string target)
{
Guid result = Guid.Empty; if ((!string.IsNullOrEmpty(target)) && (target.Trim().Length == ))
{
string encoded = string.Concat(target.Trim().Replace("-", "+").Replace("_", "/"), "=="); try
{
byte[] base64 = Convert.FromBase64String(encoded); result = new Guid(base64);
}
catch (FormatException)
{
}
} return result;
} /// <summary>
/// 是否为数字
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static Boolean IsNumeric(this String str)
{
long temp_big_int;
var is_number = long.TryParse(str, out temp_big_int);
return is_number;
} /// <summary>
/// string to int
/// </summary>
/// <param name="str"></param>
/// <param name="defVal"></param>
/// <returns></returns>
public static int ToInt(this String str, int defVal = )
{
int.TryParse(str, out defVal);
return defVal;
} /// <summary>
/// string to long
/// </summary>
/// <param name="str"></param>
/// <param name="defVal"></param>
/// <returns></returns>
public static long ToLong(this String str, long defVal = )
{
long.TryParse(str, out defVal);
return defVal;
} /// <summary>
/// string to decimal
/// </summary>
/// <param name="str"></param>
/// <param name="defVal"></param>
/// <returns></returns>
public static decimal ToDecimal(this String str, decimal defVal = )
{
decimal.TryParse(str, out defVal);
return defVal;
} /// <summary>
/// string to float
/// </summary>
/// <param name="str"></param>
/// <param name="defVal"></param>
/// <returns></returns>
public static float ToFloat(this String str, float defVal = )
{
float.TryParse(str, out defVal);
return defVal;
} /// <summary>
/// string to double
/// </summary>
/// <param name="str"></param>
/// <param name="defVal"></param>
/// <returns></returns>
public static double ToDouble(this String str, double defVal = )
{
double.TryParse(str, out defVal);
return defVal;
} private static DateTime minValue = DateTime.MinValue; /// <summary>
/// string to datetime
/// </summary>
/// <param name="str"></param>
/// <param name="format">日期格式</param>
/// <param name="defVal">默认日期</param>
/// <returns></returns>
public static DateTime ToDateTime(this string str, string format, DateTime defVal)
{
try
{
DateTime dt = DateTime.ParseExact(str, format, System.Globalization.CultureInfo.InvariantCulture);
return dt;
}
catch (Exception ex)
{
Debug.WriteLine(ex);
return defVal;
}
} #region 加解密
/// <summary>
/// AES加密
/// </summary>
/// <param name="str">需要加密字符串</param>
/// <returns>加密后字符串</returns>
public static String Encrypt(this string str)
{
try
{
return Encrypt(str, PublicKey);
}
catch (Exception e)
{
return str;
}
} /// <summary>
/// AES解密
/// </summary>
/// <param name="str">需要解密字符串</param>
/// <returns>解密后字符串</returns>
public static String Decrypt(this string str)
{
try
{
return Decrypt(str, PublicKey);
}
catch (Exception e)
{
return str;
}
}
/// <summary>
/// AES加密
/// </summary>
/// <param name="str">需要加密的字符串</param>
/// <param name="key">32位密钥</param>
/// <returns>加密后的字符串</returns>
public static string Encrypt(this string str, string key)
{
Byte[] keyArray = System.Text.Encoding.UTF8.GetBytes(key);
Byte[] toEncryptArray = System.Text.Encoding.UTF8.GetBytes(str);
var rijndael = new System.Security.Cryptography.RijndaelManaged();
rijndael.Key = keyArray;
rijndael.Mode = System.Security.Cryptography.CipherMode.ECB;
rijndael.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
rijndael.IV = System.Text.Encoding.UTF8.GetBytes(Iv);
System.Security.Cryptography.ICryptoTransform cTransform = rijndael.CreateEncryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length);
return Convert.ToBase64String(resultArray, , resultArray.Length);
}
/// <summary>
/// AES解密
/// </summary>
/// <param name="str">需要解密的字符串</param>
/// <param name="key">32位密钥</param>
/// <returns>解密后的字符串</returns>
public static string Decrypt(this string str, string key)
{
Byte[] keyArray = System.Text.Encoding.UTF8.GetBytes(key);
Byte[] toEncryptArray = Convert.FromBase64String(str);
var rijndael = new System.Security.Cryptography.RijndaelManaged();
rijndael.Key = keyArray;
rijndael.Mode = System.Security.Cryptography.CipherMode.ECB;
rijndael.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
rijndael.IV = System.Text.Encoding.UTF8.GetBytes(Iv);
System.Security.Cryptography.ICryptoTransform cTransform = rijndael.CreateDecryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length);
return System.Text.Encoding.UTF8.GetString(resultArray);
}
/// <summary>
/// AES加密
/// </summary>
/// <param name="str">需要加密字符串</param>
/// <returns>加密后字符串</returns>
public static String EncryptToString(this string str)
{
try
{
return EncryptToString(str, PublicKey);
}
catch (Exception e)
{
return str;
}
} /// <summary>
/// AES加密
/// </summary>
/// <param name="str">需要加密的字符串</param>
/// <param name="key">32位密钥</param>
/// <returns>加密后的字符串</returns>
public static string EncryptToString(this string str, string key)
{
Byte[] keyArray = System.Text.Encoding.UTF8.GetBytes(key);
Byte[] toEncryptArray = System.Text.Encoding.UTF8.GetBytes(str);
var rijndael = new System.Security.Cryptography.RijndaelManaged();
rijndael.Key = keyArray;
rijndael.Mode = System.Security.Cryptography.CipherMode.ECB;
rijndael.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
rijndael.IV = System.Text.Encoding.UTF8.GetBytes(Iv);
System.Security.Cryptography.ICryptoTransform cTransform = rijndael.CreateEncryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length);
StringBuilder builder = new StringBuilder();
int num2 = resultArray.Length - ;
for (int i = ; i <= num2; i++)
{
builder.AppendFormat("{0:X2}", resultArray[i]);
}
return builder.ToString();
// return Convert.ToBase64String(resultArray, 0, resultArray.Length);
} /// <summary>
/// AES解密
/// </summary>
/// <param name="str">需要解密字符串</param>
/// <returns>解密后字符串</returns>
public static String DecryptToString(this string str)
{
try
{
return DecryptToString(str, PublicKey);
}
catch (Exception e)
{
return str;
}
} /// <summary>
/// AES解密
/// </summary>
/// <param name="str">需要解密的字符串</param>
/// <param name="key">32位密钥</param>
/// <returns>解密后的字符串</returns>
public static string DecryptToString(this string str, string key)
{
Byte[] keyArray = System.Text.Encoding.UTF8.GetBytes(key);
int halfInputLength = str.Length / ;
Byte[] toEncryptArray = new Byte[halfInputLength];
for (int x = ; x < halfInputLength; x++)
{
int i = (Convert.ToInt32(str.Substring(x * , ), ));
toEncryptArray[x] = (byte)i;
} var rijndael = new System.Security.Cryptography.RijndaelManaged();
rijndael.Key = keyArray;
rijndael.Mode = System.Security.Cryptography.CipherMode.ECB;
rijndael.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
rijndael.IV = System.Text.Encoding.UTF8.GetBytes(Iv);
System.Security.Cryptography.ICryptoTransform cTransform = rijndael.CreateDecryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length);
return System.Text.Encoding.UTF8.GetString(resultArray);
// return UTF8Encoding.UTF8.GetString(resultArray);
}
#endregion private static readonly Regex RepalceHttpToHttpsRegex = new Regex("^http(\\:\\/\\/){1}", RegexOptions.IgnoreCase);
/// <summary>
/// 替换http为https
/// </summary>
/// <param name="url">targetProtocol: https</param>
/// <returns></returns>
public static string ToHttpsUrl(this string url)
{
url = url.ToTrim();
string strOutput = RepalceHttpToHttpsRegex.Replace(url, "https://");
return strOutput;
} private static readonly Regex RemoveHttpOrHttpsRegex = new Regex("^http(s?)(\\:\\/\\/){1}", RegexOptions.IgnoreCase);
/// <summary>
////// </summary>
/// <param name="url">targetProtocol: https</param>
/// <returns></returns>
public static string ToRemoveUrlProtocol(this string url)
{
url = url.ToTrim();
string strOutput = RemoveHttpOrHttpsRegex.Replace(url, "//");
return strOutput;
}
}
}
扩展了一些String常用的方法.的更多相关文章
- String常用使用方法,1.创建string的常用3+1种方式,2.引用类型使用==比较地址值,3.String当中获取相关的常用方法,4.字符串的截取方法,5.String转换常用方法,6.切割字符串----java
一个知识点使用一个代码块方便查看 1.创建string的常用3+1种方式 /* 创建string的常用3+1种方式 三种构造方法 public String():创建一个空字符串,不含有任何内容: p ...
- String常用的方法
l String: 字符串类,字符串是常量:它们的值在创建之后不能更改 l 方法 boolean equals(Object obj) 判断两个字符串中的内容是否相同 boolean equalsIg ...
- String常用处理方法
1.去空格 用于删除字符串的头尾空白符. 语法:public String trim() 返回值:删除头尾空白符的字符串. 删除所有空格 str.replace(" ", &quo ...
- String对象中常用的方法
String对象中常用的方法 1.charCodeAt方法返回一个整数,代表指定位置字符的Unicode编码.strObj.charCodeAt(index)说明:index将被处理字符的从零开始 ...
- js中关于string的一些常用的方法
最近总结了一些关于string中的常用方法, 其中大部分的方法来自于<JavaScript框架设计>这本书, 如果有更好的方法,或者有关于string的别的常用的方法,希望大家不吝赐教. ...
- String:(字符串)中常用的方法
package stringyiwen; //字符串中常用的方法public class StringTest03 { public static void main(String[] args) { ...
- String类中常用的方法
@Test public void demo(){ // 以下为String中的常用的方法及注释, 最常用的注释前有**标注 String s = "abcdefg123456"; ...
- int转换为String,常用的四种方法。
int i = 100; 方法一:String s1 = i + " "; 方法二:String s2 = String.valueof(i); 方法三(先转换为Integer类型 ...
- jQuery常用工具方法
前面的话 jQuery提供一些与元素无关的工具方法,不必选中元素,就可以直接使用这些方法.如果理解原生javascript的继承原理,那么就能理解工具方法的实质.它是定义在jQuery构造函数上的方法 ...
随机推荐
- 将自定义控件加载到RichTextbox并进行交互
先前遇到一个问题,将自定义控件加载到RichTextbox后,无法触发自定义控件的各种事件,最终找到解决办法:设置RichTextbox的IsDocumentEnabled="True&qu ...
- 【全面解禁!真正的Expression Blend实战开发技巧】第四章 从最常用ButtonStyle开始 - PathButton
原文:[全面解禁!真正的Expression Blend实战开发技巧]第四章 从最常用ButtonStyle开始 - PathButton 上一篇我们介绍了TextButton,但为了追求界面的张力, ...
- Android 开发相关
1.app下载更新 https://git.oschina.net/lwngreat/UpdateHelper
- C# Lambda表达式Contains方法 like
原文:Lambda表达式Contains方法 like 1.使用Contains方法的必备条件: Contains等价于SQL中的like语句.不过Contains只针对于字符串(string)类型的 ...
- error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“类型说明符”
解决办法: 打开项目工程----> 属性 ---> c/c++ --> 语音 --> 符合模式 修改成否即可
- windows界面程序设计,设置一个窗口始终在屏幕最前,SetWindowPos函数
有时这种需求还是很必须的,比如现在做的一个登录验证系统,如果在windows登录界面点击到窗口外面,那窗口就会永远隐藏掉没法再启用了.这种情况必须设置该窗口一直在最前. 使用函数SetWindowPo ...
- Windows 各种计时函数总结(QueryPerformanceCounter可以达到微秒)
本文对Windows平台下常用的计时函数进行总结,包括精度为秒.毫秒.微秒三种精度的5种方法.分为在标准C/C++下的二种time()及clock(),标准C/C++所以使用的time()及clock ...
- 屏蔽按CapsLock键切换到大写时,编辑框自动弹出的提示(UnregisterClass(TOOLTIPS_CLASS)后,重新设置WndProc并注意返回值)
WNDPROC OldProc; LPCTSTR lpStr = TEXT("保持大写锁定打开可能会使您错误输入密码"); LRESULT CALLBACK WindowProc( ...
- 在mac上尝试docker-swarm
声明:本博客欢迎转发,但请保留原作者信息!新浪微博:@Lingxian_kong;博客地址:孔令贤的博客;内容系本人学习.研究和总结,如有雷同,实属荣幸! 安装docker-machine 我的安装环 ...
- 一条命令,秒秒钟完成MD5、SHA1校验,这就叫效率!
相信很多奋斗在运维战线的小伙伴们经常会遇到版本升级之类的问题.笔者之前所在的公司每次进行版本发布的时候都会附带MD5校验哈希值,每次升级之前一般都要核对MD5哈希值的,刚刚开始的时候对Linux并不是 ...