A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mf152 中级黑马   /  2013-8-28 15:06  /  1174 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何对文件中的数据索引;比如文件中的数据是{11000 1100000111 1100000111······};读取文件数据的时候每五个连续的数中如果是11000的在另一个文件中记录10;如过是00011的记录01;这个需求代码如何写呢

评分

参与人数 1技术分 +1 收起 理由
张智文 + 1

查看全部评分

4 个回复

正序浏览
{:soso_e176:}
亲,请问下问题是否解决?
如果已解决请及时将未解决改为已解决
如果未解决请回帖追问
三天未回复的将视为已解决

详情参考: 如何更改分类

保持队形,谢谢合作{:soso_e121:}
回复 使用道具 举报
本帖最后由 老衲玩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

评分

参与人数 1技术分 +1 收起 理由
张智文 + 1

查看全部评分

回复 使用道具 举报
为什么方便观察,我打印到控制台上了

        // 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());

        }

评分

参与人数 1技术分 +1 收起 理由
张智文 + 1

查看全部评分

回复 使用道具 举报
不知道这是二进制数据进行加密或编码吗,使用java语言可以吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马