截取字符串的另一种做法

来源:互联网 发布:8080端口服务打开 编辑:程序博客网 时间:2024/04/28 18:28

/*编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。

 *  但是要保证汉字不被截半个,半个汉字应舍弃,如输入“我ABCDEF”,6

 *  应该输出为“我ABC”而不是“我ABC+汉的半个”。

 */

之前大家的做法都是将字符串转成字节数组再进行遍历并截取,我尝试了另外一种做法就是将字符串转成字符数组进行遍历,每遍历到一个中文就将代表截取长度的变量减一。判断遍历到的字符是不是两个字节采用的方法是字符的int值大于255。很巧妙吧?

 

import java.util.Arrays;

public class Test10 {

         public static void main(String[] args) {

                   String str = "ABCDEF";

                  

                   //调用方法打印截取后的字符串。

                   System.out.println(cutString(str,6));

         }

        

         public static String cutString(String str,int x){

                   //将字符串转成字符数组。

                   char[] chs = str.toCharArray();

                   StringBuilder sb = new StringBuilder();

                  

                   //遍历字符数组并将其转存到另一个符合截取长度的新字符数组。

                   for(int i = 0;i < x;i ++){

                            //当遍历的字符为汉字时,x1,即截取长度减一

                            if (chs[i] > 256 ){

                                     x--;

                            }

                   }

                   //将修改后长度的字符数组逐个添加到可变字符序列中

                   for(int i = 0;i < x;i ++){

                            sb.append(chs[i]);

                   }

                  

                   //将截取后的可变字符序列转成字符串返回。

                   return sb.toString();

         }

 

}

原创粉丝点击