using System;
using System.Text;
namespace BatchService.Framework.Utility
{
///
/// 字符串操作工具集
///
public class StringUtil
{
public StringUtil()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
///
/// 从字符串中的尾部删除指定的字符串
///
///
///
///
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;
}
}
///
/// 获取拆分符右边的字符串
///
///
///
///
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;
}
///
/// 获取拆分符左边的字符串
///
///
///
///
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;
}
///
/// 去掉最后一个逗号
///
///
///
public static string DelLastComma(string origin)
{
if (origin.IndexOf(",") == -1)
{
return origin;
}
return origin.Substring(0, origin.LastIndexOf(","));
}
///
/// 删除不可见字符
///
///
///
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();
}
///
/// 获取数组元素的合并字符串
///
///
///
public static string GetArrayString(string[] stringArray)
{
string totalString = null;
for (int i = 0; i < stringArray.Length; i++)
{
totalString = totalString + stringArray[i];
}
return totalString;
}
///
/// 获取某一字符串在字符串数组中出现的次数
///
///
///
///
///
///
///
///
///
///
///
///
/// A int value...
///
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;
}
///
/// 获取某一字符串在字符串中出现的次数
///
///
///
/// 原字符串
///
///
///
///
/// 匹配字符串
///
///
///
/// 匹配字符串数量
///
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;
}
///
/// 截取从startString开始到原字符串结尾的所有字符
///
///
///
///
///
///
///
///
///
///
///
///
/// A string value...
///
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; ;
}
}
///
/// 按字节数取出字符串的长度
///
/// 要计算的字符串
/// 字符串的字节数
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;
}
///
/// 按字节数要在字符串的位置
///
/// 字符串的位置
/// 要计算的字符串
/// 字节的位置
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);
}
///
/// 从包含中英文的字符串中截取固定长度的一段,inputString为传入字符串,len为截取长度(一个汉字占两个位)。
///
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;
}
}
///
/// 从包含中英文的字符串中截取固定长度的一段,inputString为传入字符串,len为截取长度(一个汉字占两个位)。
///
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;
}
}
///
/// 去除文本中的html代码。
///
public static string RemoveHtml(string inputString)
{
return System.Text.RegularExpressions.Regex.Replace(inputString, @"<[^>]+>", "");
}
///
/// 半角转全角(SBC case)
///
/// 任意字符串
/// 全角字符串
///
///全角空格为12288,半角空格为32
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
///
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);
}
///
/// 全角转半角(DBC case)
///
/// 任意字符串
/// 半角字符串
///
///全角空格为12288,半角空格为32
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
///
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", "
");
builder1.Replace("\n", "
");
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);
}
}
}