使用byte数据流,处理纯数字的字符串数据,实现相邻的数据只保留一个,如“555566666777766666”处理为“5676”

基础知识整理:

一个数字字符,需要一个byte数位储存,而字符串可以调用getByte()方法来得到Byte数据流

 

处理思路:

1.将数字字符串转化成byte数据流的形式,然后在byte[]中,byte[0]为第一个数字,byte[1]为第二个数字····

2.将数字字符串分解后,设计算法将每个数字进行对比,筛选出相邻数据不同的则保留后的解惑,最后输出

具体的实现代码:

 1 public class cutString {
 2 
 3     public static void main(String[] args) {
 4         String str = "112222333322225556667778";  //待处理的数字字符串数组
 5         byte[] c;                      //保存待处理数字字符串数据Byte数据流的数组
 6         ArrayList<Integer> result = new ArrayList<Integer>();  //保存处理结果的数组
 7         try {
 8             c = str.getBytes("utf-8");                //获取数字字符串的byte数组,“utf-8”方式
 9             System.out.println(new String(c,"utf-8"));      //输出转换后的byte数组,“utf-8”解码,会发现能够恢复原来的形式
10             for (int i = 0; i < c.length-1; i++) {
11                 if (c[i]!=c[i+1]) {    //响铃数据不相同,则保存前一个,后一个继续比较
12                     result.add((int) c[i]);
13                 }
14                 if ((i==c.length-2)&&c[c.length-2]!=c[c.length-1]) {  //保存前一个会出现末尾两个以上数据相同则无法保存
15                     result.add((int) c[c.length-1]);            //故当到达倒数第二个数,和后一个不同则添加后一个
16                 }                                 //注:这个方法只能解决末尾两个数据不同的情况,
17             }                                   //连续比较关键在于保证开头和结尾两处的正确处理,若最后的数字一直连续则还需要添加一个条件语句,当二者相等则保存
18             for (int i = 0; i < result.size(); i++) {            
19                 System.out.print(result.get(i)-48);      //通过utf-8编码后,会成为49,无法再像第8行那样还原
20             }                              //由于数字1~9在utf-8中一次递增,所以可以通过每个数字减去48的方法还原他们的值
21             System.out.println();                  // 注,此方法只能解决10以内的数字字符串的问题,但数字字符串貌似又没有办法去辨别10以上的数字
22                                            //所以此方法能够单纯处理数字字符串,但处理
23             
24             
25         } catch (UnsupportedEncodingException e) {
26             // TODO Auto-generated catch block
27             e.printStackTrace();
28         }
29         
30         String ssss = "1111111";
31         byte[] dddd;
32         try {
33             dddd = ssss.getBytes("utf-8");
34             String gggg = new String(dddd,"utf-8");
35             System.out.println(gggg);
36         } catch (UnsupportedEncodingException e) {
37             // TODO Auto-generated catch block
38             e.printStackTrace();
39         }
40         
41         
42     }
43     
44     
45 }

 

 

“utf-8”方式
posted @ 2016-07-16 23:41  thinfog  阅读(245)  评论(0编辑  收藏  举报