Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 18567|Répondre: 0

[ASP.NET] C# intercepte la longueur de la chaîne de cordes de 3 façons

[Copié le lien]
Publié sur 22/05/2015 21:43:04 | | |
Méthode 1 :
  1. /// <summary>
  2.         /// 截取指定长度的字符串
  3.         /// </summary>
  4.         /// <param name="str">要截取的字符串</param>
  5.         /// <param name="len">要截取的长度</param>
  6.         /// <param name="flag">截取后是否加省略号(true加,false不加)</param>
  7.         /// <returns></returns>
  8.         public static string CutString(string str, int len, bool flag)
  9.         {
  10.             string _outString = "";
  11.             int _len = 0;
  12.             for (int i = 0; i < str.Length; i++)
  13.             {
  14.                 if (Char.ConvertToUtf32(str, i) >= Convert.ToInt32("4e00", 16) && Char.ConvertToUtf32(str, i) <= Convert.ToInt32("9fff", 16))
  15.                 {
  16.                     _len += 2;
  17.                     if (_len > len)//截取的长度若是最后一个占两个字节,则不截取
  18.                     {
  19.                         break;
  20.                     }
  21.                 }
  22.                 else
  23.                 {
  24.                     _len++;
  25.                 }


  26.                 try
  27.                 {
  28.                     _outString += str.Substring(i, 1);
  29.                 }
  30.                 catch
  31.                 {
  32.                     break;
  33.                 }
  34.                 if (_len >= len)
  35.                 {
  36.                     break;
  37.                 }
  38.             }
  39.             if (str != _outString && flag == true)//判断是否添加省略号
  40.             {
  41.                 _outString += "...";
  42.             }
  43.             return _outString;
  44.         }
Code de copie
Méthode 2 :
  1. /// <summary>
  2.         /// 截取指定长度的字符串
  3.         /// </summary>
  4.         /// <param name="str">要截取的字符串</param>
  5.         /// <param name="len">要截取的长度</param>
  6.         /// <param name="flag">截取后是否加省略号(true加,false不加)</param>
  7.         /// <returns></returns>
  8.         public static string CutString(string str, int len, bool flag)
  9.         {
  10.             System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
  11.             byte[] bts = ascii.GetBytes(str);
  12.             int _len = 0;
  13.             string _outString = "";
  14.             for (int i = 0; i < bts.Length; i++)
  15.             {
  16.                 if ((int)bts[i] == 63)//两个字符
  17.                 {
  18.                     len += 2;
  19.                     if (_len > len)//截取的长度若是最后一个占两个字节,则不截取
  20.                     {
  21.                         break;
  22.                     }
  23.                 }
  24.                 else
  25.                 {
  26.                     len += 1;
  27.                 }

  28.                 try
  29.                 {
  30.                     _outString += str.Substring(i, 1);
  31.                 }
  32.                 catch
  33.                 {
  34.                     break;
  35.                 }

  36.                 if (_len >= len)
  37.                 {
  38.                     break;
  39.                 }
  40.             }
  41.             if (str != _outString && flag == true)//判断是否添加省略号
  42.             {
  43.                 _outString += "...";
  44.             }
  45.             return _outString;
  46.         }
Code de copie
Méthode 3 :
  1. /// <summary>
  2.         /// 截取指定长度的字符串
  3.         /// </summary>
  4.         /// <param name="str">要截取的字符串</param>
  5.         /// <param name="len">要截取的长度</param>
  6.         /// <param name="flag">截取后是否加省略号(true加,false不加)</param>
  7.         /// <returns></returns>
  8.         public static string CutString(string str, int len, bool flag)
  9.         {
  10.             if (str == null || str.Length == 0 || len <= 0)
  11.             {
  12.                 return string.Empty;
  13.             }

  14.             int l = str.Length;

  15.             #region 计算长度
  16.             int clen = 0;
  17.             while (clen < len && clen < l)
  18.             {
  19.                 //每遇到一个中文,则将目标长度减一。
  20.                 if ((int)str[clen] > 128)
  21.                 {
  22.                     len--;
  23.                 }
  24.                 clen++;
  25.             }
  26.             #endregion

  27.             if (clen < l)
  28.             {
  29.                 return flag ? str.Substring(0, clen) + "..." : str.Substring(0, clen);
  30.             }
  31.             else
  32.             {
  33.                 return str;
  34.             }
  35.         }
Code de copie






Précédent:asp.net le cadre standard à trois niveaux utilisé pour l’examen
Prochain:Dans le contrôle GridView, le contenu textuel affiche le code source HTML complet
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com