Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 18567|Respuesta: 0

[ASP.NET] C# intercepta la longitud de la cuerda de 3 maneras

[Copiar enlace]
Publicado en 22/5/2015 21:43:04 | | |
Método 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.         }
Copiar código
Método 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.         }
Copiar código
Método 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.         }
Copiar código






Anterior:asp.net el marco estándar de tres niveles utilizado para el examen
Próximo:En el control GridView, el contenido de texto muestra el código fuente HTML completo
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com