一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

java 实现截取字符串并按字节分别输出实例代码

时间:2017-06-07 编辑:简简单单 来源:一聚教程网

java 实现截取字符串并按字节分别输出实例代码

前言:

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

2、解析思想

本题容易产生困惑的是中文字符和英文字符如何处理,在这里需要考虑汉字和英文字符的占用字节数问题,中文字符占两个字节,英文字符占一个字节,了解这个关键点后,那么编写代码就容易啦!

3、Java代码

 

 代码如下复制代码

importjava.util.Scanner;

 

publicclassInterception {

  staticString ss;//要进行截取操作的字符串

  staticintn;//截取的字符串的字节数

  publicstaticvoidmain(String[] args) {

    System.out.println("请输入字符串:");

    Scanner scStr =newScanner(System.in);//从键盘获取字符串

    ss = scStr.next();//将Scanner对象中的内容以字符串的形式取出来

    System.out.println("请输入字节数:");

    Scanner scByte =newScanner(System.in);//从键盘获取字符串

    n = scByte.nextInt();//将Scanner对象中的内容以数值的形式取出来

    Interception(setValue());//方法与方法间的套用

  }

 

  publicstaticString[] setValue() {//此方法的作用是将字符串转换成字符串数组

    String[] string =newString[ss.length()];//创建一个字符数组string

    for(inti =0; i < string.length; i++) {

      string[i] = ss.substring(i, i +1); //将字符串ss中的第i个字符取出,放入字符数组中string中

    }

    returnstring;//将这个字符数组返回

  }

 

  publicstaticvoidInterception(String[] string) {

    intcount =0;

    String m ="[\u4e00-\u9fa5]";//汉字的正则表达试

    System.out.println("每"+ n +"字节进行划分的字符串如下所示:");

    for(inti =0; i < string.length; i++) {

      if(string[i].matches(m)) {//将字符数组中的每一个元素与表则表达式进行匹配,如果相同则返回true

        count = count +2;//如果当前字符是汉字,计数器count就加2

      }else{

        count = count +1;//如果当前字符不是汉字,计数器count就加1

      }

      if(count < n) {//如果当前计数器count的值小于n,则输出当前字符

        System.out.print(string[i]);

      }elseif(count == n) {//如果当前计数器count的值等于n,则输出当前字符

        System.out.print(string[i]);

        count =0;

        System.out.println();//内循环结果,则需要换行,起到控制打印格式的作用

      }else{

        count =0;//如果当前计数器count的值大于n,则计数器count清零,接着执行外部循环

        System.out.println();

      }

    }

  }

}

 

热门栏目