using System;
|
using System.Text;
|
|
namespace BatchService.Framework.Utility
|
{
|
/// <summary>
|
/// 字符串操作工具集
|
/// </summary>
|
public class StringUtil
|
{
|
public StringUtil()
|
{
|
//
|
// TODO: 在此处添加构造函数逻辑
|
//
|
}
|
|
/// <summary>
|
/// 从字符串中的尾部删除指定的字符串
|
/// </summary>
|
/// <param name="sourceString"></param>
|
/// <param name="removedString"></param>
|
/// <returns></returns>
|
public static string Remove(string sourceString, string removedString)
|
{
|
try
|
{
|
if (sourceString.IndexOf(removedString) < 0)
|
throw new Exception("原字符串中不包含移除字符串!");
|
string result = sourceString;
|
int lengthOfSourceString = sourceString.Length;
|
int lengthOfRemovedString = removedString.Length;
|
int startIndex = lengthOfSourceString - lengthOfRemovedString;
|
string tempSubString = sourceString.Substring(startIndex);
|
if (tempSubString.ToUpper() == removedString.ToUpper())
|
{
|
result = sourceString.Remove(startIndex, lengthOfRemovedString);
|
}
|
return result;
|
}
|
catch
|
{
|
return sourceString;
|
}
|
}
|
|
/// <summary>
|
/// 获取拆分符右边的字符串
|
/// </summary>
|
/// <param name="sourceString"></param>
|
/// <param name="splitChar"></param>
|
/// <returns></returns>
|
public static string RightSplit(string sourceString, char splitChar)
|
{
|
string result = null;
|
string[] tempString = sourceString.Split(splitChar);
|
if (tempString.Length > 0)
|
{
|
result = tempString[tempString.Length - 1].ToString();
|
}
|
return result;
|
}
|
|
/// <summary>
|
/// 获取拆分符左边的字符串
|
/// </summary>
|
/// <param name="sourceString"></param>
|
/// <param name="splitChar"></param>
|
/// <returns></returns>
|
public static string LeftSplit(string sourceString, char splitChar)
|
{
|
string result = null;
|
string[] tempString = sourceString.Split(splitChar);
|
if (tempString.Length > 0)
|
{
|
result = tempString[0].ToString();
|
}
|
return result;
|
}
|
|
/// <summary>
|
/// 去掉最后一个逗号
|
/// </summary>
|
/// <param name="origin"></param>
|
/// <returns></returns>
|
public static string DelLastComma(string origin)
|
{
|
if (origin.IndexOf(",") == -1)
|
{
|
return origin;
|
}
|
return origin.Substring(0, origin.LastIndexOf(","));
|
}
|
|
/// <summary>
|
/// 删除不可见字符
|
/// </summary>
|
/// <param name="sourceString"></param>
|
/// <returns></returns>
|
public static string DeleteUnVisibleChar(string sourceString)
|
{
|
System.Text.StringBuilder sBuilder = new System.Text.StringBuilder(131);
|
for (int i = 0; i < sourceString.Length; i++)
|
{
|
int Unicode = sourceString[i];
|
if (Unicode >= 16)
|
{
|
sBuilder.Append(sourceString[i].ToString());
|
}
|
}
|
return sBuilder.ToString();
|
}
|
|
/// <summary>
|
/// 获取数组元素的合并字符串
|
/// </summary>
|
/// <param name="stringArray"></param>
|
/// <returns></returns>
|
public static string GetArrayString(string[] stringArray)
|
{
|
string totalString = null;
|
for (int i = 0; i < stringArray.Length; i++)
|
{
|
totalString = totalString + stringArray[i];
|
}
|
return totalString;
|
}
|
|
/// <summary>
|
/// 获取某一字符串在字符串数组中出现的次数
|
/// </summary>
|
/// <param name="stringArray" type="string[]">
|
/// <para>
|
///
|
/// </para>
|
/// </param>
|
/// <param name="findString" type="string">
|
/// <para>
|
///
|
/// </para>
|
/// </param>
|
/// <returns>
|
/// A int value...
|
/// </returns>
|
public static int GetStringCount(string[] stringArray, string findString)
|
{
|
int count = -1;
|
string totalString = GetArrayString(stringArray);
|
string subString = totalString;
|
|
while (subString.IndexOf(findString) >= 0)
|
{
|
subString = totalString.Substring(subString.IndexOf(findString));
|
count += 1;
|
}
|
return count;
|
}
|
|
/// <summary>
|
/// 获取某一字符串在字符串中出现的次数
|
/// </summary>
|
/// <param name="stringArray" type="string">
|
/// <para>
|
/// 原字符串
|
/// </para>
|
/// </param>
|
/// <param name="findString" type="string">
|
/// <para>
|
/// 匹配字符串
|
/// </para>
|
/// </param>
|
/// <returns>
|
/// 匹配字符串数量
|
/// </returns>
|
public static int GetStringCount(string sourceString, string findString)
|
{
|
int count = 0;
|
int findStringLength = findString.Length;
|
string subString = sourceString;
|
|
while (subString.IndexOf(findString) >= 0)
|
{
|
subString = subString.Substring(subString.IndexOf(findString) + findStringLength);
|
count += 1;
|
}
|
return count;
|
}
|
|
/// <summary>
|
/// 截取从startString开始到原字符串结尾的所有字符
|
/// </summary>
|
/// <param name="sourceString" type="string">
|
/// <para>
|
///
|
/// </para>
|
/// </param>
|
/// <param name="startString" type="string">
|
/// <para>
|
///
|
/// </para>
|
/// </param>
|
/// <returns>
|
/// A string value...
|
/// </returns>
|
public static string GetSubString(string sourceString, string startString)
|
{
|
try
|
{
|
int index = sourceString.ToUpper().IndexOf(startString);
|
if (index > 0)
|
{
|
return sourceString.Substring(index);
|
}
|
return sourceString;
|
}
|
catch
|
{
|
return "";
|
}
|
}
|
|
public static string GetSubString(string sourceString, string beginRemovedString, string endRemovedString)
|
{
|
try
|
{
|
if (sourceString.IndexOf(beginRemovedString) != 0)
|
beginRemovedString = "";
|
|
if (sourceString.LastIndexOf(endRemovedString, sourceString.Length - endRemovedString.Length) < 0)
|
endRemovedString = "";
|
|
int startIndex = beginRemovedString.Length;
|
int length = sourceString.Length - beginRemovedString.Length - endRemovedString.Length;
|
if (length > 0)
|
{
|
return sourceString.Substring(startIndex, length);
|
}
|
return sourceString;
|
}
|
catch
|
{
|
return sourceString; ;
|
}
|
}
|
|
/// <summary>
|
/// 按字节数取出字符串的长度
|
/// </summary>
|
/// <param name="strTmp">要计算的字符串</param>
|
/// <returns>字符串的字节数</returns>
|
public static int GetByteCount(string strTmp)
|
{
|
int intCharCount = 0;
|
for (int i = 0; i < strTmp.Length; i++)
|
{
|
if (System.Text.UTF8Encoding.UTF8.GetByteCount(strTmp.Substring(i, 1)) == 3)
|
{
|
intCharCount = intCharCount + 2;
|
}
|
else
|
{
|
intCharCount = intCharCount + 1;
|
}
|
}
|
return intCharCount;
|
}
|
|
/// <summary>
|
/// 按字节数要在字符串的位置
|
/// </summary>
|
/// <param name="intIns">字符串的位置</param>
|
/// <param name="strTmp">要计算的字符串</param>
|
/// <returns>字节的位置</returns>
|
public static int GetByteIndex(int intIns, string strTmp)
|
{
|
int intReIns = 0;
|
if (strTmp.Trim() == "")
|
{
|
return intIns;
|
}
|
for (int i = 0; i < strTmp.Length; i++)
|
{
|
if (System.Text.UTF8Encoding.UTF8.GetByteCount(strTmp.Substring(i, 1)) == 3)
|
{
|
intReIns = intReIns + 2;
|
}
|
else
|
{
|
intReIns = intReIns + 1;
|
}
|
if (intReIns >= intIns)
|
{
|
intReIns = i + 1;
|
break;
|
}
|
}
|
return intReIns;
|
}
|
|
public static string CutRightString(string inputString, int len)
|
{
|
if (string.IsNullOrEmpty(inputString))
|
return string.Empty;
|
|
var input = Reverse(inputString);
|
var output = CutString(input, len);
|
return Reverse(output);
|
}
|
|
/// <summary>
|
/// 从包含中英文的字符串中截取固定长度的一段,inputString为传入字符串,len为截取长度(一个汉字占两个位)。
|
/// </summary>
|
public static string CutString(string inputString, int len)
|
{
|
if (inputString == null || inputString == "")
|
{
|
return "";
|
}
|
|
inputString = inputString.Trim();
|
byte[] myByte = System.Text.Encoding.Default.GetBytes(inputString);
|
if (myByte.Length > len)
|
{
|
string result = "";
|
for (int i = 0; i < inputString.Length; i++)
|
{
|
byte[] tempByte = System.Text.Encoding.Default.GetBytes(result);
|
if (tempByte.Length < len)
|
{
|
result += inputString.Substring(i, 1);
|
}
|
else
|
{
|
break;
|
}
|
}
|
return result + "...";
|
}
|
else
|
{
|
return inputString;
|
}
|
}
|
|
/// <summary>
|
/// 从包含中英文的字符串中截取固定长度的一段,inputString为传入字符串,len为截取长度(一个汉字占两个位)。
|
/// </summary>
|
public static string CutString(string inputString, int len, string end)
|
{
|
inputString = inputString.Trim();
|
byte[] myByte = System.Text.Encoding.Default.GetBytes(inputString);
|
if (myByte.Length > len)
|
{
|
string result = "";
|
for (int i = 0; i < inputString.Length; i++)
|
{
|
byte[] tempByte = System.Text.Encoding.Default.GetBytes(result);
|
if (tempByte.Length < len)
|
{
|
result += inputString.Substring(i, 1);
|
}
|
else
|
{
|
break;
|
}
|
}
|
return result + end;
|
}
|
else
|
{
|
return inputString;
|
}
|
}
|
|
/// <summary>
|
/// 去除文本中的html代码。
|
/// </summary>
|
public static string RemoveHtml(string inputString)
|
{
|
return System.Text.RegularExpressions.Regex.Replace(inputString, @"<[^>]+>", "");
|
}
|
|
/// <summary>
|
/// 半角转全角(SBC case)
|
/// </summary>
|
/// <param name="input">任意字符串</param>
|
/// <returns>全角字符串</returns>
|
///<remarks>
|
///全角空格为12288,半角空格为32
|
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
|
///</remarks>
|
public static string ToSBC(string input)
|
{
|
char[] c = input.ToCharArray();
|
for (int i = 0; i < c.Length; i++)
|
{
|
if (c[i] == 32)
|
{
|
c[i] = (char)12288;
|
continue;
|
}
|
if (c[i] < 127)
|
c[i] = (char)(c[i] + 65248);
|
}
|
return new string(c);
|
}
|
|
|
/// <summary>
|
/// 全角转半角(DBC case)
|
/// </summary>
|
/// <param name="input">任意字符串</param>
|
/// <returns>半角字符串</returns>
|
///<remarks>
|
///全角空格为12288,半角空格为32
|
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
|
///</remarks>
|
public static string ToDBC(string input)
|
{
|
char[] c = input.ToCharArray();
|
for (int i = 0; i < c.Length; i++)
|
{
|
if (c[i] == 12288)
|
{
|
c[i] = (char)32;
|
continue;
|
}
|
if (c[i] > 65280 && c[i] < 65375)
|
c[i] = (char)(c[i] - 65248);
|
}
|
return new string(c);
|
}
|
|
public static string HtmlEncode(string str, bool encodeBlank = true)
|
{
|
if ((str == "") || (str == null))
|
return "";
|
|
StringBuilder builder1 = new StringBuilder(str);
|
|
builder1.Replace("&", "&");
|
builder1.Replace("<", "<");
|
builder1.Replace(">", ">");
|
builder1.Replace("\"", """);
|
builder1.Replace("'", "'");
|
builder1.Replace("\t", " ");
|
|
if (encodeBlank)
|
builder1.Replace(" ", " ");
|
|
builder1.Replace("\r", "");
|
builder1.Replace("\n\n", "<p><br/></p>");
|
builder1.Replace("\n", "<br />");
|
return builder1.ToString();
|
}
|
|
public static string TextEncode(string s)
|
{
|
StringBuilder builder1 = new StringBuilder(s);
|
builder1.Replace("&", "&");
|
builder1.Replace("<", "<");
|
builder1.Replace(">", ">");
|
builder1.Replace("\"", """);
|
builder1.Replace("'", "'");
|
return builder1.ToString();
|
}
|
|
public static string Reverse(string s)
|
{
|
char[] charArray = s.ToCharArray();
|
Array.Reverse(charArray);
|
return new string(charArray);
|
}
|
|
|
}
|
}
|