zoukankan      html  css  js  c++  java
  • 按字节截取中英文

     1     class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             while (true)
     6             {
     7                 Console.WriteLine("请输入字符串:");
     8                 string s = getInput(0);
     9                 Console.WriteLine("请输入截取的字节长度(整数):");
    10                 int l = Convert.ToInt32(getInput(1));
    11                 s = GetSubStringByByte(s, l);
    12                 Console.WriteLine("输出的结果:" + s);
    13                 Console.WriteLine("................................................
    ");
    14             }
    15         }
    16         static string getInput(int type)
    17         {
    18             while (true)
    19             {
    20                 string s = string.Empty;
    21                 try
    22                 {
    23                     s = Console.ReadLine();
    24                 }
    25                 catch { }
    26                 if (type == 0)
    27                 {
    28                     if (!string.IsNullOrWhiteSpace(s))
    29                     {
    30                         return s;
    31                     }
    32                     else
    33                     {
    34                         Console.WriteLine("请输入正确的字符串:");
    35                     }
    36                 }
    37                 else
    38                 {
    39                     int l = 0;
    40                     if (int.TryParse(s,out l))
    41                     {
    42                         return s;
    43                     }
    44                     else
    45                     {
    46                         Console.WriteLine("请输入正确的整数:");
    47                     }
    48                 }
    49             }
    50         }
    51         /// <summary>
    52         /// 按字节截取字符串
    53         /// </summary>
    54         /// <param name="s">所要截取的字符串</param>
    55         /// <param name="l">截取字节长度</param>
    56         /// <param name="endStr">后接字符串(如“...”)</param>
    57         /// <returns></returns>
    58         static public string GetSubStringByByte(string s, int l, string endStr = "")
    59         {
    60             string temp = s;
    61             if (string.IsNullOrEmpty(temp))
    62             {
    63                 return string.Empty;
    64             }
    65             else if (Regex.Replace(temp, "[u4e00-u9fa5]", "zz", RegexOptions.IgnoreCase).Length <= l)
    66             {
    67                 return temp;
    68             }
    69             int j = 0, k = 0;
    70 
    71             CharEnumerator ce = temp.GetEnumerator();
    72             while (ce.MoveNext())
    73             {
    74                 j += (ce.Current > 0 && ce.Current < 255) ? 1 : 2;
    75 
    76                 if (j <= l)
    77                 {
    78                     k++;
    79                 }
    80                 else
    81                 {
    82                     temp = s.Substring(0, k);
    83                     break;
    84                 }
    85             }
    86             return temp + endStr;
    87         }
    88     }
  • 相关阅读:
    java.lang.NoSuchMethodError:antlr.collections.AST.getLine() I
    T7 java Web day01 标签HTML
    T6 s1 day19
    T5 s5 Day18
    T5 s4 Day 17
    T5 s3 day16
    T5 s2 Day 15
    T5 s1 day14
    T4 S03 day 12
    T4 S01 day1
  • 原文地址:https://www.cnblogs.com/nan-yi/p/4259208.html
Copyright © 2011-2022 走看看