zoukankan      html  css  js  c++  java
  • 截取字符串

    【需求说明】:

      编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉子不被截半个,如"我ABC" 4,因该截为"我AB",输入"我ABC汉DEF" 6,应该输出"我ABC",而不是"我ABC+汉的半个"

    【需求分析】:

      容易产生困惑的是中文字符和英文字符,在这里需要考虑汉字和英文字符的占用字节数问题,中文字符占两个字节,英文字符占一个字节,理解了这个,就很容易完成本题了。

    【需求实现】:

      直接进入源码吧,源码注释已解释很详细了

     1 package edu.aeon.algorithm;
     2 
     3 /**
     4  * @author lzj
     5  * 创建于: 2017年10月20日 上午12:00:52 by lzj
     6  * 需求/说明: 
     7  * 编写一个截取字符串的函数,输入为一个字符串和字节数,
     8  * 输出为按字节截取的字符串。但是要保证汉子不被截半个,
     9  * 如"我ABC" 4,因该截为"我AB",输入"我ABC汉DEF" 6,
    10  * 应该输出"我ABC",而不是"我ABC+汉的半个"
    11  */
    12 public class Substr {
    13     /**
    14      * 
    15      * at 2017年10月20日 上午12:02:51 by lzj
    16      * @parameters1 String str 输入的要截取的字符串
    17      * @parameters2 int byt 输入的要截取字符串的字节数
    18      * @return void
    19      * 函数说明:根据所传入要截取的字节数及字符串来截取满足需求的字符串
    20      */
    21     
    22     private void substring(String str,int byt) {
    23         String arr[] =new String[str.length()];
    24         String stegx="[u4e00-u9fa5]";
    25         int count=0; //字节计数器
    26         for(int i=0;i<arr.length;i++) {
    27             arr[i] = str.substring(i, i+1);
    28             if(arr[i].matches(stegx)) {
    29                 count=count+2; //如果arr[i]是汉字则字节计数器+2,因为一个汉字占两个字节
    30             }else {
    31                 count=count+1; //非汉子 字节计数器+1
    32             }
    33             if(count <= byt) {
    34                 System.out.print(arr[i]); //打印出,注意是在循环里面,也就是循环打印出,非单个打印
    35             }
    36             /*
    37              * 此处看需求、如果需求是打印出按n字节截取的所有字符串、
    38              * 则将此处[code]到[/code]代码段的注释放开即可、将上
    39              * 面一行if条件改为if(count < byt)即可,此处仅按照按需求
    40              * 所以将[code]到[/code]代码段作为注释
    41              * */
    42             //[code]
    43             /*else if(count == byt) {  
    44                 System.out.print(arr[i]);
    45                 count=0;
    46                 System.out.println();
    47             }else {
    48                 count=0;
    49                 System.out.println();
    50             }*/
    51             //[/code]
    52         }
    53     }
    54     /**
    55      * 
    56      * at 2017年10月20日 上午12:07:15 by lzj
    57      * @parameters1 String[] args
    58      * @return void
    59      */
    60     public static void main(String[] args) {
    61         //这里可以自己改造通过控制台输入,这个简单,我就不浪费时间了
    62         Substr str=new Substr();
    63         str.substring("我ABC汉DEF", 4);
    64         System.out.println("
    =====================================");
    65         str.substring("我ABC汉DEF", 6);
    66     }
    67 }
    单击“+”查看

    【运行截图】:

      

    如有任何疑问可联系邮箱: 给我发邮件、或直接联系QQ:1584875179 || 点返回首页

  • 相关阅读:
    vue组件通信类型限制
    vue父子组件通信
    vue组件data必须是函数
    vue组件模块抽离
    vue局部组件语法糖
    leetcode刷题-47全排列2
    leetcode刷题-46全排列
    leetcode刷题-43字符串相乘
    leetcode刷题-40组合总和2
    leetcode刷题-39组合总和
  • 原文地址:https://www.cnblogs.com/aeon/p/7696562.html
Copyright © 2011-2022 走看看