中英文字符的截取
代码
using System.Text;
namespace CSTest
{
class StrOp
{
/// <summary>
/// 得到字符串的长度,一个汉字算2个字符
/// </summary>
/// <param name="str">字符串</param>
/// <returns>返回字符串长度</returns>
public static int GetLength(string str)
{
if (str.Length == 0) return 0;
ASCIIEncoding ascii = new ASCIIEncoding();
int tempLen = 0;
byte[] s = ascii.GetBytes(str);
for (int i = 0; i < s.Length; i++)
{
if ((int)s[i] == 63)
{
tempLen += 2;
}
else
{
tempLen += 1;
}
}
return tempLen;
}
public static string CutString(string str,int len)
{
if (str.Length == 0) return str;
ASCIIEncoding ascii = new ASCIIEncoding();
int tempLen = 0;
byte[] s = ascii.GetBytes(str);
for (int i = 0; i < s.Length; i++)
{
if ((int)s[i] == 63)
{
tempLen += 2;
}
else
{
tempLen += 1;
}
if (tempLen > len)
{
tempLen = i;
break;
}
}
str = str.Substring(0, tempLen);
return str;
}
}
}
namespace CSTest
{
class StrOp
{
/// <summary>
/// 得到字符串的长度,一个汉字算2个字符
/// </summary>
/// <param name="str">字符串</param>
/// <returns>返回字符串长度</returns>
public static int GetLength(string str)
{
if (str.Length == 0) return 0;
ASCIIEncoding ascii = new ASCIIEncoding();
int tempLen = 0;
byte[] s = ascii.GetBytes(str);
for (int i = 0; i < s.Length; i++)
{
if ((int)s[i] == 63)
{
tempLen += 2;
}
else
{
tempLen += 1;
}
}
return tempLen;
}
public static string CutString(string str,int len)
{
if (str.Length == 0) return str;
ASCIIEncoding ascii = new ASCIIEncoding();
int tempLen = 0;
byte[] s = ascii.GetBytes(str);
for (int i = 0; i < s.Length; i++)
{
if ((int)s[i] == 63)
{
tempLen += 2;
}
else
{
tempLen += 1;
}
if (tempLen > len)
{
tempLen = i;
break;
}
}
str = str.Substring(0, tempLen);
return str;
}
}
}
改写别人的方法,得到CutString,初步测试,满足要求
测试如下:
代码
using System;
namespace CSTest
{
class Program
{
static void Main(string[] args)
{
string strText = "12wd中国人中國人";
Console.WriteLine("调用GetLength方法:" +
StrOp.GetLength(strText));
Console.WriteLine(strText.Length);
Console.WriteLine(StrOp.CutString(strText, 15));
Console.ReadKey();
}
}
}
namespace CSTest
{
class Program
{
static void Main(string[] args)
{
string strText = "12wd中国人中國人";
Console.WriteLine("调用GetLength方法:" +
StrOp.GetLength(strText));
Console.WriteLine(strText.Length);
Console.WriteLine(StrOp.CutString(strText, 15));
Console.ReadKey();
}
}
}
测试结果:
Fighting