科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件用C#截取一个中英文混合字符串的长度

用C#截取一个中英文混合字符串的长度

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

用C#截取一个中英文混合字符串的长度

作者: js_lily 来源:赛迪网技术社区 2007年11月28日

关键字: 长度 混合字符串 截取 C#

  • 评论
  • 分享微博
  • 分享邮件
我们常做的一件事情,就是在文章系统中,截取文章标题的长度,超过指定长度,就加“...” 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);
查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章