在C#中截取指定长度的中文字符串
2016-09-08 11:11
246 查看
在我写代码的过程中, 碰到要在原字符串中截取指定长度的字符串. 我们通常使用string.Substring(), 但使用这个有一点问题就是中文字符和英文字符都认为点一个长度. 因为这样, 所以有时候我们要取的并不是我们想要的.
在网上找了一下, 没找到.于是自己写了一个.如果有错误的地方请大家指正.谢谢!
private static string SubString(string stringToSub, int length)
{
Regex regex = new Regex("[/u4e00-/u9fa5]+", RegexOptions.Compiled);
char[] stringChar = stringToSub.ToCharArray();
StringBuilder sb = new StringBuilder();
int nLength = 0;
for (int i = 0; i < stringChar.Length; i++)
{
if (regex.IsMatch((stringChar[i]).ToString()))
{
sb.Append(stringChar[i]);
nLength += 2;
}
else
{
sb.Append(stringChar[i]);
nLength = nLength + 1;
}
if (nLength > length)
break;
}
return sb.ToString();
}
public static string SubComment(string original, int width)
{
int len = original.Length;
if (len < width)
return original;
int clen = 0;//当前长度
int cwidth = 0;//当前宽度
while (clen < len && cwidth < width)
{
if ((int) original[clen] > 128)
cwidth++;
clen++;
cwidth++;
}
return original.Substring(0, clen);
}
在网上找了一下, 没找到.于是自己写了一个.如果有错误的地方请大家指正.谢谢!
private static string SubString(string stringToSub, int length)
{
Regex regex = new Regex("[/u4e00-/u9fa5]+", RegexOptions.Compiled);
char[] stringChar = stringToSub.ToCharArray();
StringBuilder sb = new StringBuilder();
int nLength = 0;
for (int i = 0; i < stringChar.Length; i++)
{
if (regex.IsMatch((stringChar[i]).ToString()))
{
sb.Append(stringChar[i]);
nLength += 2;
}
else
{
sb.Append(stringChar[i]);
nLength = nLength + 1;
}
if (nLength > length)
break;
}
return sb.ToString();
}
public static string SubComment(string original, int width)
{
int len = original.Length;
if (len < width)
return original;
int clen = 0;//当前长度
int cwidth = 0;//当前宽度
while (clen < len && cwidth < width)
{
if ((int) original[clen] > 128)
cwidth++;
clen++;
cwidth++;
}
return original.Substring(0, clen);
}
相关文章推荐
- 在C#中截取指定长度的中文字符串(效率提高2500倍)
- 在C#中截取指定长度的中文字符串
- 在C#中截取指定长度的中文字符串.
- 在C#中截取指定长度的中文字符串(效率提高2500倍)
- 在C#中截取指定长度的中文字符串
- 【转载】C# 字符串截取指定长度的中文字符--精点
- C#截取指定长度中英文字符串方法
- 用C#截取指定长度的中英文混合字符串
- 用C#截取指定长度的中英文混合字符串
- 一个C#中截取指定长度字符串的方法(含盖半全角问题)
- SQL 字符串截取左边指定长度字符串中文、英文
- C#截取指定长度中英文字符串方法
- 用C#截取指定长度的中英文混合字符串 改进版
- C#截取指定长度中英文字符串方法
- [导入]用C#截取指定长度的中英文混合字符串 改进版
- 一个C#中截取指定长度字符串的方法(含盖半全角问题)
- C#截取指定长度中英文字符串方法
- 用C#截取指定长度的中英文混合字符串
- 用C#截取指定长度的中英文混合字符串
- 用C#截取指定长度的中英文混合字符串的最终算法