字符串的处理类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace BIReportCenter.Utility
{
public class StringHelper
{
#region String length formatter

/// <summary>
/// 对字符串进行裁剪
/// </summary>
public static string Trim(string stringTrim, int maxLength)
{
return Trim(stringTrim, maxLength, "...");
}

/// <summary>
/// 对字符串进行裁剪(区分单字节及双字节字符)
/// </summary>
/// <param name="rawString">需要裁剪的字符串</param>
/// <param name="maxLength">裁剪的长度,按双字节计数</param>
/// <param name="appendString">如果进行了裁剪需要附加的字符</param>
public static string Trim(string rawString, int maxLength, string appendString)
{
if (string.IsNullOrEmpty(rawString) || rawString.Length <= maxLength)
{
return rawString;
}
else
{
int rawStringLength = Encoding.UTF8.GetBytes(rawString).Length;
if (rawStringLength <= maxLength * 2)
return rawString;
}

int appendStringLength = Encoding.UTF8.GetBytes(appendString).Length;
StringBuilder checkedStringBuilder = new StringBuilder();
int appendedLenth = 0;
for (int i = 0; i < rawString.Length; i++)
{
char _char = rawString[i];
checkedStringBuilder.Append(_char);

appendedLenth += Encoding.Default.GetBytes(new char[] { _char }).Length;

if (appendedLenth >= maxLength * 2 - appendStringLength)
break;
}

return checkedStringBuilder.ToString() + appendString;
}

#endregion

#region 特殊字符

/// <summary>
/// 检测是否有Sql危险字符
/// </summary>
/// <param name="str">要判断字符串</param>
/// <returns>判断结果</returns>
public static bool IsSafeSqlString(string str)
{
return !Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\‘]");
}

/// <summary>
/// 删除SQL注入特殊字符
/// 解然 20070622加入对输入参数sql为Null的判断
/// </summary>
public static string StripSQLInjection(string sql)
{
if (!string.IsNullOrEmpty(sql))
{
//过滤 ‘ --
string pattern1 = @"(\%27)|(\‘)|(\-\-)";

//防止执行 ‘ or
string pattern2 = @"((\%27)|(\‘))\s*((\%6F)|o|(\%4F))((\%72)|r|(\%52))";

//防止执行sql server 内部存储过程或扩展存储过程
string pattern3 = @"\s+exec(\s|\+)+(s|x)p\w+";

sql = Regex.Replace(sql, pattern1, string.Empty, RegexOptions.IgnoreCase);
sql = Regex.Replace(sql, pattern2, string.Empty, RegexOptions.IgnoreCase);
sql = Regex.Replace(sql, pattern3, string.Empty, RegexOptions.IgnoreCase);
}
return sql;
}

public static string SQLSafe(string Parameter)
{
Parameter = Parameter.ToLower();
Parameter = Parameter.Replace("‘", "");
Parameter = Parameter.Replace(">", ">");
Parameter = Parameter.Replace("<", "<");
Parameter = Parameter.Replace("\n", "<br>");
Parameter = Parameter.Replace("\0", "·");
return Parameter;
}

/// <summary>
/// 清除xml中的不合法字符
/// </summary>
/// <remarks>
/// 无效字符:
/// 0x00 - 0x08
/// 0x0b - 0x0c
/// 0x0e - 0x1f
/// </remarks>
public static string CleanInvalidCharsForXML(string input)
{
if (string.IsNullOrEmpty(input))
return input;
else
{
StringBuilder checkedStringBuilder = new StringBuilder();
Char[] chars = input.ToCharArray();
for (int i = 0; i < chars.Length; i++)
{
int charValue = Convert.ToInt32(chars[i]);

if ((charValue >= 0x00 && charValue <= 0x08) || (charValue >= 0x0b && charValue <= 0x0c) || (charValue >= 0x0e && charValue <= 0x1f))
continue;
else
checkedStringBuilder.Append(chars[i]);
}

return checkedStringBuilder.ToString();

//string result = checkedStringBuilder.ToString();
//result = result.Replace("", "");
//return Regex.Replace(result, @"[\u0000-\u0008\u000B\u000C\u000E-\u001A\uD800-\uDFFF]", delegate(Match m) { int code = (int)m.Value.ToCharArray()[0]; return (code > 9 ? "&#" + code.ToString() : "&#0" + code.ToString()) + ";"; });
}
}

/// <summary>
/// 改正sql语句中的转义字符
/// </summary>
public static string mashSQL(string str)
{
return (str == null) ? "" : str.Replace("\‘", "‘");
}

/// <summary>
/// 替换sql语句中的有问题符号
/// </summary>
public static string ChkSQL(string str)
{
return (str == null) ? "" : str.Replace("‘", "‘‘");
}

/// <summary>
/// 判断是否有非法字符
/// </summary>
/// <param name="strString"></param>
/// <returns>返回TRUE表示有非法字符,返回FALSE表示没有非法字符。</returns>
public static bool CheckBadStr(string strString)
{
bool outValue = false;
if (strString != null && strString.Length > 0)
{
string[] bidStrlist = new string[9];
bidStrlist[0] = "‘";
bidStrlist[1] = ";";
bidStrlist[2] = ":";
bidStrlist[3] = "%";
bidStrlist[4] = "@";
bidStrlist[5] = "&";
bidStrlist[6] = "#";
bidStrlist[7] = "\"";
bidStrlist[8] = "net user";
bidStrlist[9] = "exec";
bidStrlist[10] = "net localgroup";
bidStrlist[11] = "select";
bidStrlist[12] = "asc";
bidStrlist[13] = "char";
bidStrlist[14] = "mid";
bidStrlist[15] = "insert";
bidStrlist[19] = "order";
bidStrlist[20] = "exec";
bidStrlist[21] = "delete";
bidStrlist[22] = "drop";
bidStrlist[23] = "truncate";
bidStrlist[24] = "xp_cmdshell";
bidStrlist[25] = "<";
bidStrlist[26] = ">";
string tempStr = strString.ToLower();
for (int i = 0; i < bidStrlist.Length; i++)
{
if (tempStr.IndexOf(bidStrlist[i]) != -1)
//if (tempStr == bidStrlist[i])
{
outValue = true;
break;
}
}
}
return outValue;
}

#endregion

#region Tools
/// <summary>
/// 去掉最后一个逗号
/// </summary>
/// <param name="String">要做处理的字符串</param>
/// <returns>去掉最后一个逗号的字符串</returns>
public static string DelLastComma(string String)
{
if (String.IndexOf(",") == -1)
{
return String;
}
return String.Substring(0, String.LastIndexOf(","));
}

/// <summary>
/// 删除最后一个字符
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string ClearLastChar(string str)
{
return (str == "") ? "" : str.Substring(0, str.Length - 1);
}
/// <summary>
/// html编码
/// </summary>
/// <param name="chr"></param>
/// <returns></returns>
public static string html_text(string chr)
{
if (chr == null)
return "";
chr = chr.Replace("‘", "‘‘");
chr = chr.Replace("<", "<");
chr = chr.Replace(">", ">");
return (chr);
}
/// <summary>
/// html解码
/// </summary>
/// <param name="chr"></param>
/// <returns></returns>
public static string text_html(string chr)
{
if (chr == null)
return "";
chr = chr.Replace("<", "<");
chr = chr.Replace(">", ">");
return (chr);
}
public static bool JustifyStr(string strValue)
{
bool flag = false;
char[] str = "^<>‘=&*, ".ToCharArray(0, 8);
for (int i = 0; i < 8; i++)
{
if (strValue.IndexOf(str[i]) != -1)
{
flag = true;
break;
}
}
return flag;
}
public static string CheckOutputString(string key)
{
string OutputString = string.Empty;
OutputString = key.Replace("<br>", "\n").Replace("<", "<").Replace(">", ">").Replace(" ", " ");
return OutputString;

}
#endregion
}
}

时间: 2024-10-13 19:58:00

字符串的处理类的相关文章

[转]C# JSON格式的字符串读取到类中

将JSON格式的字符串读取到类中 本例中建立JSON格式的字符串json,将其内容读取到Person类中 运行本代码需要添加引用动态库Newtonsoft.Json 程序代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //需要引用 Newtonsoft.Json.dll using Newtonsoft.J

全面深入介绍C++字符串:string类

http://blog.csdn.net/liuliming3000/article/details/1809385 1 从C到C++ string类 2 string类的构造函数 3 string类的字符操作 4 string的特性描述 5 string类的输入输出操作 6 string的赋值 7 string的连接 8 string的比较 9 string类的查找函数 10 string类的替换函数 11 string类的插入函数 12 string类的删除函数 13 string类的迭代器

Java随机字符串:随机数字字符串,工具类

Java中生成随机数,字符串的工具类 1. 调用方法需要传入生成字符串的长度和需要的类型 生成随机数字 生成随机字母字符串 生成随机字符串+数字等 ......... 2. 总共8种类型,具体看工具类中的注释. 1 import java.util.Date; 2 import java.util.Random; 3 import java.util.UUID; 4 5 /** 6 * @Name RandomStringUtil 7 * @Descr 生成随机字符串 8 * @author d

Java随机取字符串的工具类

原文:Java随机取字符串的工具类 源代码下载地址:http://www.zuidaima.com/share/1550463479532544.htm Java 随机取字符串的工具类 可以全部是数字,字符,也可以字符和数字组合的工具类,希望能给大家带来帮助 package com.zuidaima.test; import java.util.Random; public class RandomUtils { public static final String ALLCHAR = "012

字符串处理增强类

/// <summary> /// 字符串处理增强类 /// </summary> public sealed class StringTool { /// <summary> /// 将txt文件读入字符串 /// </summary> /// <param name="aPath"></param> /// <returns></returns> public static string

字符串处理工具类

方便我们对字符串的操作 import org.apache.commons.lang.StringUtils; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.ParseException; import java.text.SimpleDateFormat

字符串转换成类,字符串的值是事先声明类的

============问题描述============ 现在就是有一个字符串,例如temp,然后我想通过Intent intent = new Intent(Schedule.this,temp.class);转到temp页面,事先是已经声明好temp类的,怎么做啊 ============解决方案1============ try         String temp="package.classname";         Intent intent=new Intent();

C#数据结构和算法-字符串、String 类和StringBuilder类

*本文为摘抄笔记* Preface当程序需要对String对象进行许多改变时会用到StringBuilder类.因为字符串和String对象都是不可改变的,而StringBuilder对象则是易变的.String类不可变,就意味着每次对象进行改变时都需要创建一个新的对象副本.如果在创建长的字符串,或者是对相同对象进行许多改变,那么就应该用StringBuilder类来代替.StringBuilder对象是可变的,性能会更好. 字符串是字符的序列,可以包含字母.数字和其他符号.C#语言中,用双引号

通过字符串动态创建类对象

功能的需求是  不需要使用IOC 框架 来对创建指定对象. .NET 中  要想动态的 创建对象   做耦合  好像只能做到 将类生成DLL 后  然后 加载DLL 接着创建对象. JAVA 当个类文件 就可以运行. 希望做到  当读一个   .class  或者 .TXT 就可以  动态创建类对象  那多好啊!!! 还可以将 类文件 以字符串的形式写到 数据库中  通过数据库来 创建类对象. 然后就各种百度 谷歌 贴吧等  找有没相关的 解决方案    还好  找到了  . 不藏着 分享出来

操作字符串的工具类

1 package com.sunyard.util; 2 3 import java.io.IOException; 4 import java.io.UnsupportedEncodingException; 5 import java.sql.Blob; 6 import java.sql.Clob; 7 import java.text.DateFormat; 8 import java.text.SimpleDateFormat; 9 import java.util.Arrays;