return len;
}
/// <summary>
/// 重写截取字符串方法,这里的长度是字节数(汉字2个字节,外语字符1个字节)
/// </summary>
/// <param name="str"></param>
/// <param name="length">截取长度(这里的长度是字节数,汉字2个字节,外语字符1个字节)</param>
/// <returns></returns>
public string Substring(string str, int length)
{
int len = 0;
char[] arr = str.ToCharArray();
string strReturn = string.Empty;
//参数检查
if (length > Length(str))
length = Length(str);
for (int i = 0; i < arr.Length; i++)
{
//汉字
if (Asc(arr[i].ToString()) == -1)
len += 2;
else
len += 1;
if (len > length)
break;
strReturn += arr[i].ToString();
}
return strReturn;
}
/// <summary>
/// 字符转ASCII码,如果未能转换为ASCII码返回-1
/// </summary>
/// <param name="character"></param>
/// <returns></returns>
public static int Asc(string character)
{
if (character.Length == 1)
{
//因为汉字和?都被转换为63,所以?进行提前处理
if (character == "?")
return 63;
System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
int intAsciiCode = (int)asciiEncoding.GetBytes(character)[0];
//如果未能转换为ASCII码(暂且认为为汉字)
if (intAsciiCode == 63)
return -1;
return (intAsciiCode);
}
else
{
throw new Exception("Character is not valid.");
}
}
/// <summary>
/// ASCII码转字符
/// </summary>
/// <param name="asciiCode"></param>
/// <returns></returns>
public static string Chr(int asciiCode)
{
if (asciiCode >= 0 && asciiCode <= 255)
{
System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
byte[] byteArray = new byte[] { (byte)asciiCode };
string strCharacter = asciiEncoding.GetString(byteArray);
return (strCharacter);
}
else
{
throw new Exception("ASCII Code is not valid.");
}
}
关于ASCII码的转换参考: