黑马程序员技术交流社区

标题: 数据问题 [打印本页]

作者: mf152    时间: 2013-8-28 15:06
标题: 数据问题
如何对文件中的数据索引;比如文件中的数据是{11000 1100000111 1100000111······};读取文件数据的时候每五个连续的数中如果是11000的在另一个文件中记录10;如过是00011的记录01;这个需求代码如何写呢
作者: 风叶漂    时间: 2013-8-28 15:43
不知道这是二进制数据进行加密或编码吗,使用java语言可以吗
作者: 范龙波    时间: 2013-8-28 16:07
为什么方便观察,我打印到控制台上了

        // 11000的在另一个文件中记录10;如过是00011的记录01
        public static void main(String[] args) {
                String str = "11000  11000 0 00011 11000 00011 11000 "; //
                String target1 = "11000";
                String target2 = "00011";
                StringBuffer sb = new StringBuffer();
                str = str.replaceAll(" ", "");
                for (int i = 0; i < str.length();) {
                        String substring = str.substring(i);
                        int a = substring.indexOf(target1);
                        int b = substring.indexOf(target2);
                        if (a == -1 && b == -1) {
                                break;
                        }
                        i += (a < b && a != -1 ? a : b) + 5;
                        sb.append(a < b || b == -1 ? "10" : "01");

                }
                System.out.println(sb.toString());

        }
作者: 老衲玩IT    时间: 2013-8-28 16:25
本帖最后由 老衲玩IT 于 2013-8-28 16:28 编辑

楼主看好啦,首先是按正则式用x,y隔离出符合规则的字符串,再把被x或y包围的字符串替换成指定的字符串。
  1.                         String str="11000 1100000111 1100000111 00011111000100011";
  2.                         str=str.replaceAll("(1{2}0{3})", "x$1x");
  3.                         System.out.println(str);
  4.                         str=str.replaceAll("(0{3}1{2})", "y$1y");
  5.                         System.out.println(str);
  6.                         str=str.replaceAll("x1{2}0{3}x", " 10 ");
  7.                         System.out.println(str);
  8.                         str=str.replaceAll("y0{3}1{2}y", " 01 ");
  9.                         System.out.println(str);
复制代码
输出结果是这样的:
x11000x x11000x00111 x11000x00111 000111x11000x100011
x11000x x11000x00111 x11000x00111 y00011y1x11000x1y00011y
10   10 00111  10 00111 y00011y1 10 1y00011y
10   10 00111  10 00111  01 1 10 1 01
作者: 以防万一    时间: 2013-8-31 14:26
{:soso_e176:}
亲,请问下问题是否解决?
如果已解决请及时将未解决改为已解决
如果未解决请回帖追问
三天未回复的将视为已解决

详情参考: 如何更改分类

保持队形,谢谢合作{:soso_e121:}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2