今天参加了个什么什么软件大赛。。最后有几题关于文件解析的没有思路。。求大神指点!
题目大概是这样:一个txt文件中有很多字符,比如:dstd!#$%GHdfasdfahpoh4891deiiqoe3981dfhih131345hdoihadf9387
现在要从这个文件里把所有的数字提取出来,应该用什么方法呢?最好几行具体代码。。比如什么函数?split()可以么?还有一题是:一个txt文件中有很多字符,比如:ewrewr123dfqefrqewr123ewrqwer456rwtert456rtwergwgr123rkojow,
现在要统计123出现的次数和456出现的次数。。该怎么办呢
求大神指点!求大神指点!求大神指点!求大神指点!

解决方案 »

  1.   

    用正则表达式,还有Pattern和Matcher类,去看这两个类的API吧,用起来简单明了
      

  2.   

    我不会正则表达式,自己写代码实现了,效率可能不是很好,但是能完成题目要求的。
    直接给代码了,虽然不是很好,你自己再琢磨琢磨吧。题目一 public static void main(String[] args) {
    //读文件的代码就不用写了吧,假设文件内容已经读取到str变量中
    String str="dstd!#$%GHdfasdfahpoh4891deiiqoe3981dfhih131345hdoihadf9387";
    StringBuffer newStr=new StringBuffer();
    byte[] arr=str.getBytes();
    //遍历字符串的所有字符,判断为数字就保存起来
    for (byte b : arr) {
    if(b>=48 && b<=57)
    newStr.append((char)b);
    }
    System.out.println("所有的数字:"+newStr);
    }
    题目二,简单实现,split()方法效率不是很好 public static void main(String[] args) {
    String str="ewrewr123dfqefrqewr123ewrqwer456rwtert456rtwergwgr123rkojow,";
    String[] arr=str.split("123"); 
    System.out.println("123的出现次数:"+(arr.length-1));
    }
    题目二,这个相对上面的效率可能会好点。 public static void main(String[] args) {
    String str="ewrewr123dfqefrqewr123ewrqwer456rwtert456rtwergwgr123rkojow,";
    String str2="123";
    String newStr=str.replaceAll(str2, "");
    int len=0;
    if(str.length()!=newStr.length()){
    len=(str.length()-newStr.length())/str2.length();
    }
    System.out.println("123的出现次数:"+len);
    }