一个字符串形如:"我是一个中国人"和"abcdefghijklmn"
如果我在一个列表中只想输出5个字,那就出现:我是一个中
abcde而我想要的效果是输出两个字符串长度差不多.怎么控制???

解决方案 »

  1.   


                 string stringToSub = "我是一个中国人";
                 [align=left]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 > 5)
                         break;
                 }             //return sb.ToString()[/align]
      

  2.   

    忘了
    using System.Text.RegularExpressions;
      

  3.   

    要求“输出两个字符串长度差不多”,所以前提在输出,你采用不同的字体结果会与很大不同,如果在控制台等宽字体下,只要str1和str2在GB2312下占的字节数一样多就可以了,如果是其他情况,得用GDI+和相应的Font进行str的长度测量
    好运
      

  4.   

    String str = "啊哦";
    int len = ASCIIEncoding.Default.GetBytes(str).Length;  // len = 4;
    str = "ab";
    len = ASCIIEncoding.Default.GetBytes(str).Length;  // len = 2;