在 Java 中逐行处理文本文件和连字符字符串
Posted
技术标签:
【中文标题】在 Java 中逐行处理文本文件和连字符字符串【英文标题】:Processing text files and hyphenating strings line by line in Java 【发布时间】:2013-08-05 01:51:40 【问题描述】:我有一个 .txt 文件,单列中有 8,000 行。每行包含一个字母数字或一个数字,如下所示:
0219381A
10101298
32192017
1720291C
04041009
我想读取这个文件,在每个开始数字之前插入一个 0(零),在数字 3 和 4 之间插入一个连字符,然后将剩余的数字删除到一个输出文件,如下所示:
002-19
010-10
032-19
017-20
004-04
当单独完成时,我能够读取和写入文件或插入连字符,但无法使各个部分一起工作:
public static void main(String[] args) throws FileNotFoundException
// TODO Auto-generated method stub
Scanner in = new Scanner(new File("file.txt"));
PrintWriter out = new PrintWriter("file1.txt");
while(in.hasNextLine())
StringBuilder builder = new StringBuilder(in.nextLine());
builder.insert(0, "0");
builder.insert(3, "-");
String hyph = builder.toString();
out.printf(hyph);
in.close();
out.close();
我怎样才能让这些部分一起工作/还有其他方法吗?
【问题讨论】:
请直接发布您的代码,而不是外部链接 【参考方案1】:试试这个
while (in.hasNextLine())
String line = in.nextLine();
if (!line.isEmpty())
line = "0" + line.substring(0, 2) + "-" + line.substring(2, 4);
out.println(line);
【讨论】:
谢谢,Evgeniy。不幸的是没有工作。抛出的错误是:线程“main”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:2 at java.lang.String.substring(Unknown Source) at writer.splitWords.main(splitWords.java:16)跨度> 尝试 String line = in.nextLine().trim()【参考方案2】:您的代码看起来不错。如果您进行此更改,我觉得您应该会很好:
StringBuilder builder = new StringBuilder(in.nextLine().substring(0,4));
【讨论】:
以上是关于在 Java 中逐行处理文本文件和连字符字符串的主要内容,如果未能解决你的问题,请参考以下文章