栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java中的txt文件格式验证

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的txt文件格式验证

听起来您正在寻找一种通用的格式设置选项,我可以为您推荐正则表达式吗?您可以使用正则表达式进行各种不同类型的匹配。我在下面写了一个简单的示例[对于所有那些正则表达式专家,如果我不使用完美的表达方式,请多多怜悯我;)]。您可以将REGEX和MAX_LINES_TO_READ常量放入属性文件中,并对其进行修改以使其更通用。

您基本上可以测试“ .txt”文件中的最大行数(但是,建立格式需要很多行是好的-
您也可以对标题行使用正则表达式,或者根据需要使用多个不同的正则表达式来测试格式),如果所有这些行都匹配,则文件将被标记为“有效”。

这只是您可以运行的一个示例。除了仅捕获“ Exception”以外,还应该实现适当的异常处理。

对于用Java测试正则表达式,http://www.regexplanet.com/simple/index.html很好用。

这是“ ValidateTxtFile”源代码…

import java.io.*;public class ValidateTxtFile {    private final int MAX_LINES_TO_READ = 5;    private final String REGEX = ".{15}[ ]{5}.{15}[ ]{5}[-]\d{2}\.\d{2}[ ]{9}\d{2}/\d{2}/\d{4}";    public void testFile(String fileName) {        int lineCounter = 1;        try { BufferedReader br = new BufferedReader(new FileReader(fileName)); String line = br.readLine(); while ((line != null) && (lineCounter <= MAX_LINES_TO_READ)) {     // Validate the line is formatted correctly based on regular expressions          if (line.matches(REGEX)) {         System.out.println("Line " + lineCounter + " formatted correctly");     }     else {         System.out.println("Invalid format on line " + lineCounter + " (" + line + ")");     }     line = br.readLine();     lineCounter++; }        } catch (Exception ex) { System.out.println("Exception occurred: " + ex.toString());        }    }    public static void main(String args[]) {        ValidateTxtFile vtf = new ValidateTxtFile();        vtf.testFile("transactions.txt");    }   }

这是“ transactions.txt”中的内容…

Electric Electric Co.        -50.99         12/28/2011Food     Food Store          -80.31         12/28/2011Clothes  Clothing Store      -99.36         12/28/2011Entertainment       Bowling  -30.4393       12/28/2011Restaurant          Mcdonalds-10.35         12/28/11

我运行应用程序时的输出是…

Line 1 formatted correctlyLine 2 formatted correctlyLine 3 formatted correctlyInvalid format on line 4 (Entertainment       Bowling  -30.4393       12/28/2011)Invalid format on line 5 (Restaurant          Mcdonalds-10.35         12/28/11)

EDIT 12/29/2011大约10:00 am
不知道是否存在性能问题,但是就像供参考之用,我多次复制“
transactions.txt”中的条目以构建一个大约130万行的文本文件在其中,我可以在PC上大约7秒内浏览整个文件。我将System.out更改为仅在无效(524,288)和有效(786,432)格式的条目末尾显示总计。“
transactions.txt”的大小约为85mb。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/509446.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号