我有以下文本:
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。但是,由于我采用了字符串中的第一个数字 (arrOfStr [i].charAt(0)
),文件 10-8519 出现了问题,我知道我的解决方案还不够,有什么建议吗?
最佳答案
除了我的评论之外,考虑到前导整数和第一个单词之间没有空格,第一个空格处的子字符串不起作用。
这个问题/答案有一些应该有所帮助的选项,在我看来,使用正则表达式 (\d+) 的选项是最简单的选项,复制如下。
Matcher matcher = Pattern.compile("\\d+").matcher(arrOfStr[i]);
matcher.find();
int yourNumber = Integer.valueOf(matcher.group());
Given a string find the first embedded occurrence of an integer
关于java - 如何将一个文本拆分为多个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49564233/