我们常做的一件事情,就是在文章系统中,截取文章标题的长度,超过指定长度,就加“...” eIv'r*mWT(
zBS4Kg<{
如两个字符串: YvRFxSi
string str1 = "中国人要啊abc呀~"; rjE(u<D
string str2 = "1中国人23456abc呀~"; /A5{ 0ce(
ITJ`@RNa[
要截取后,输出: >nB* /*
J Q&K)$dI
str1 = "中国人要..."; r<W-w:>1~
str2 = "1中国人2..."; ab^PJMq
x='26YVy$
即要把中英文混合的字符串,在截取后,长度要一致,即8个字节的长度,而且不能出现中文被从中间截断的情况。于是写了个方法: D$0-0}.V!
,Y q ho
public static string getStr(string s,int l) vA~Q4@
{ 'nKjWL
string temp = s ; T#\m'6i t
if (Regex.Replace(temp,"[\u4e00-\u9fa5]","zz",RegexOptions.IgnoreCase).Length<=l) EyenuTl
{ <YFni| :
return temp; _Gx_LtD-
} S?kvXT}N
for (int i=temp.Length;i>=0;i--) hiD#S+Q&
{ Q/Z Il
temp = temp.Substring(0,i); +c7}pC XY
if (Regex.Replace(temp,"[\u4e00-\u9fa5]","zz",RegexOptions.IgnoreCase).Length<=l-3) ?z RBjDO
{ \%v?Y-h,
return temp + ""; (.^y[]+@?
} RV;Ky4
} V:|pB$jFQ
return ""; =Uf5/(L[Z
} <f2R0N5b7"
调用: 9!WSG?\F$B
string content = "中国人啊abc呀呀呀呀"; m\2*$$e,
content = getStr(content,13);
查看本文来源