文本文件的内容是试题,并且格式工整,不想用人工排序并追加md的标题。当前使用idea工具,在win10系统中操作,使用java8,使用hutool进行文件读写。
格式是:
第一行 试题中文,内容开头是:序号+、 [
第二行 试题英文
第三行 至 答案行 选项
答案行 倒数第二行
最后一行 内容解析
待处理文件内容
1、 [单选] 试题中文...
English test questions
A:...
B:...
C:...
D:...
正确答案:A 你的答案:A
解析:....
3、 [单选] 试题中文...
English test questions
A:...(含英文)
B:...(含英文)
C:...(含英文)
D:...(含英文)
正确答案:C 你的答案:C
解析:....
2、 [多选] 试题中文...(选择两项)
English test questions...(select two)
A:...(含英文)
B:...(含英文)
C:...(含英文)
D:...(含英文)
E:...(含英文)
F:...(含英文)
正确答案:BF 你的答案:CF
解析:....
...
处理代码
pom.xml
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>4.6.2</version>
</dependency>
处理代码
import cn.hutool.core.io.FileUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
/**
* FileTest 类说明:
*
* @author z.y
* @version v1.0
* @date 2022/7/6
*/
public class FileTest {
public static void main(String[] args) {
String path = "F:\\记录\\考题\\练习二-含解析.txt";
String path_new = "F:\\记录\\考题\\练习二-含解析-处理.txt";
System.out.println(path);
try {
List<String> lines = FileUtil.readLines(path, "UTF-8");
System.out.println(lines.size());
String sp_1 = "、 [",sp_11 = "、 \\[",sp_2 = "正确答案",sp_3 = "解析:";
Topic topic = null;
int index = 0;
Map<String, Topic> map = new TreeMap<>();
for (String line : lines) {
if( null == line || line.length() <= 0 ){ continue; }
if(line.indexOf(sp_1) > 0 ){
topic = new Topic();
index = 0;
String k = line.split(sp_11)[0];
map.put(k,topic);
System.out.print(k+',');
}
index +=1;
if( topic == null ){ continue; }
if( index == 1 ){
topic.info = line;
}else if( index == 2){
topic.infoEn = line;
}else if( line.startsWith(sp_2)){
topic.answer = line;
index = 99;
}else if( line.startsWith(sp_3)){
topic.analysis = line;
index = 99;
}else if( index > 11){
System.out.println("未识别["+ index +']');
}else {
if(topic.options == null){
topic.options = new ArrayList<>();
}
topic.options.add(line);
}
}
System.out.println("<>");
System.out.println(map.size());
System.out.println("<>");
List<String> newList = new ArrayList<>(lines.size() +18);
for (int i = 1,l = map.size(); i <= l; i++) {
if(i%10==1){
newList.add("## " + i + '-' + (i + 9));
System.out.println("## " + i + '-' + (i + 9));
}
if(null != ( topic = map.get(i+""))){
System.out.println(i + "\t" + topic.info.substring(0,10) + "\t" + topic.answer);
newList.add(topic.info);
newList.add(topic.infoEn);
newList.addAll(topic.options);
newList.add(topic.answer);
newList.add(topic.analysis);
newList.add("");
}
}
System.out.println(newList.size());
FileUtil.writeLines(newList,path_new,"UTF-8");
System.out.println("end");
}catch (Exception e){
e.printStackTrace();
}
}
/** 题 */
public static class Topic{
/** 题-中文 */
String info;
/** 题-英文 */
String infoEn;
/** 选项 */
List<String> options;
/** 答案 */
String answer;
/** 解析 */
String analysis;
}
}
日志
F:\记录\考题\练习二-含解析.txt
1440
1,3,2...<>
180
<>
## 1-10
1 1、 [单选] 在项 正确答案:A 你的答案:A
2 2、 [单选] 在项 正确答案:BF 你的答案:CF
3 3、 [单选] 在项 正确答案:C 你的答案:C
...略
## 11-20
11 11、 [单选] 项 正确答案:A 你的答案:A
...略
1638
end


在win10系统下,借助idea工具,使用Java8和Hutool库对格式工整的试题文本文件进行处理,避免人工排序和追加md标题。文件包含试题中文、英文、选项、答案和解析等内容,还给出了处理代码和日志。
649

被折叠的 条评论
为什么被折叠?



