【发布时间】:2018-03-29 20:07:52
【问题描述】:
我有以下文字:
1
(some text)
/
2
(some text)
/
.
.
/
8519
(some text)
我想把这个文本分成几个文本文件,每个文件在文本之前都有数字的名称,即(1.txt,2.txt)等等,这个文件的内容将是文本。
我试过这段代码
BufferedReader br = new BufferedReader(new FileReader("(Path)\\doc.txt"));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
// sb.append(System.lineSeparator());
line = br.readLine();
}
String str = sb.toString();
String[] arrOfStr = str.split("/");
for (int i = 0; i < arrOfStr.length; i++) {
PrintWriter writer = new PrintWriter("(Path)" + arrOfStr[i].charAt(0) + ".txt", "UTF-8");
writer.println(arrOfStr[i].substring(1));
writer.close();
}
System.out.println("Done");
} finally {
br.close();
}
此代码适用于文件 1-9。但是,文件 10-8519 出现问题,因为我在字符串中取了第一个数字 (arrOfStr [i].charAt(0)) 我知道我的解决方案不够有任何建议吗?
【问题讨论】:
-
您应该搜索从字符串中提取数字或在第一个数字之后使用正则表达式执行子字符串。如果您的文本非常一致,即数组中的每个条目都有一个前导数字,您甚至可以在第一个“空格”处执行一个子字符串:yourNumber = arrOfStr[i].substring(0, arrOfStr[i].indexOf (" "));
-
我很惊讶您的 StringBuilder 或
arrOfStr没有弹出。我会首先重写,就像你之前尝试的那样,在你阅读它们时处理它们。您也知道您的问题 - 您只查看 1 个字符char(0)。 -
@CopyJoshthanx 为您的回答...这会很棒,但是当我拆分文本时,数字和第一个字符串之间没有空格,因此它将数字+第一个单词作为 yourNumber