请问我关于扫描仪的问题;我在一家小公司工作;我们有一个软件;它生成一个大文本文件;而且我们必须从中得到一些有用的信息; 我想用Java编写一个简单的应用程序以节省时间;你能指导我吗?
例如我要这个输出;
输出量
RFID:25蓝色:562 WifiID:2610 RFID:33
RFID数量:2
例如;这是我的文本文件,因为使用我们的软件生成的每个文件都有14000行:)
-------------------------- AAAAAAAAAAAA;RFID=25; BBBB;BBBBBBBB;BBBBBBBBBB; CCCCC;fffdsfdsfdfsd;BLUID=562;dfsdfsf; fgfdgdf;terter;fdgfdgtryt; trtretrre;WifiID=2610;trterytuytutyu; zxzxzxzxz;popopopwwepp;RFID:33;aasasds… gfdgfgfd;gfdgfdgfd;fdgfgfgfd;
Scanner scanner = new Scanner("i:\1.txt"); scanner.findInLine("RFID="); if (scanner.hasNext()) System.out.println(scanner.next()); else System.out.println("Error!");
请帮我 ;
非常感谢 …
好吧,您建议的来源不会做您想要的。扫描仪使用定界符分隔输入。默认的分隔符是空格(空格,制表符或换行符)。Scanner.hasNext()只是告诉您是否存在新的空白脱机令牌。Scanner.next()仅返回该令牌。请注意,这些都不受Scanner.findInLine(pattern)的影响,因为它所做的只是在当前行中搜索提供的模式。
也许是这样的(我还没有测试过):
Scanner scanner = new Scanner("i:\\1.txt"); scanner.useDelimiter(";"); Pattern words = Pattern.compile("(RFID=|BLUID=|WifiID=)");//just separate patterns with | while (scanner.hasNextLine()) { key = scanner.findInLine(words); while (key != null) { String value = scanner.next(); if (key.equals("RFID=") { System.out.print("RFID:" + value); } //continue with else ifs for other keys key = scanner.findInLine(words); } scanner.nextLine(); }
我建议您不要使用扫描仪,而只使用BufferedReader和几个Pattern对象,因为该方法对于您想做的事情更加灵活。