求助-如何将txt中指定内容存储到access数据库中(已连接好数据库)

lianlian0702 2018-01-14 07:46:41
txt里的内容是WOS文献集,其中每篇文章在文本中有多行,要求:导入文件夹后,提取其中每篇文章的作者(AF开头及其后几行)、标题(以TI 开头的行)、多个关键词(以DE开头的行,每个词用分号分割)、机构(C1开头即其后几行中,包含作者的详细地址,机构是地址中第一个逗号前内容)、所属分类(以WC开头的行,每个类包含大类和小类,用逗号分割,多个类间用分号分割),数据提取后存储到数据库中。
已经把格式转成这样了
关于这个提取,不知道怎么写,求指点
...全文
921 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sunyiban 2018-02-01
  • 打赏
  • 举报
回复
File file = new File("F:/temp.txt");
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        String line = "";
        // 将所有分类初始化为string对象用于保存
        Map<String, String> resultMap = new HashMap<String, String>();
        String start = "";
        while ((line = reader.readLine()) != null) {
            // 截取每行前三个字母(根据你的要求修改截取长度)
            if (line.substring(0, 3).trim().length() > 0) {
                start = line.substring(0, 3).trim();
            }
            if (resultMap.containsKey(start)) {
                resultMap.put(start, resultMap.get(start) + line.substring(3));
            } else {
                resultMap.put(start, line.substring(3));
            }
        }
        reader.close();

        for (Entry<String, String> keySet : resultMap.entrySet()) {
            System.out.println(keySet.getKey() + ":" + keySet.getValue());
        }
改进了一下代码~
Sunyiban 2018-02-01
  • 打赏
  • 举报
回复
引用 1 楼 u011594442 的回复:
File file = new File("F:/temp.txt");
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        String line = "";
        // 将所有分类初始化为string对象用于保存
        Map<String, String> resultMap = new HashMap<String, String>();
        resultMap.put("FN", "");
        resultMap.put("VR", "");
        resultMap.put("PT", "");
        resultMap.put("AU", "");
        resultMap.put("AF", "");
        resultMap.put("TI", "");
        resultMap.put("SO", "");
        resultMap.put("LA", "");
        resultMap.put("DT", "");
        resultMap.put("DE", "");
        resultMap.put("AB", "");
        String start = "";
        while ((line = reader.readLine()) != null) {
            // 截取每行前三个字母(根据你的要求修改截取长度)
            if (line.substring(0, 3).trim().length() > 0) {
                start = line.substring(0, 3).trim();
            }
            resultMap.put(start, resultMap.get(start) + line.substring(3));
        }
        reader.close();

        for (Entry<String, String> keySet : resultMap.entrySet()) {
            System.out.println(keySet.getKey() + ":" + keySet.getValue());
        }
这个方法,MAP里面的值根据你的txt来修改,然后保存到数据库字段对应MAP的key就行。至于每个key里面的细分,string.split(",")就行,按照你的需求来~
引用 1 楼 u011594442 的回复:
File file = new File("F:/temp.txt");
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        String line = "";
        // 将所有分类初始化为string对象用于保存
        Map<String, String> resultMap = new HashMap<String, String>();
        resultMap.put("FN", "");
        resultMap.put("VR", "");
        resultMap.put("PT", "");
        resultMap.put("AU", "");
        resultMap.put("AF", "");
        resultMap.put("TI", "");
        resultMap.put("SO", "");
        resultMap.put("LA", "");
        resultMap.put("DT", "");
        resultMap.put("DE", "");
        resultMap.put("AB", "");
        String start = "";
        while ((line = reader.readLine()) != null) {
            // 截取每行前三个字母(根据你的要求修改截取长度)
            if (line.substring(0, 3).trim().length() > 0) {
                start = line.substring(0, 3).trim();
            }
            resultMap.put(start, resultMap.get(start) + line.substring(3));
        }
        reader.close();

        for (Entry<String, String> keySet : resultMap.entrySet()) {
            System.out.println(keySet.getKey() + ":" + keySet.getValue());
        }
这个方法,MAP里面的值根据你的txt来修改,然后保存到数据库字段对应MAP的key就行。至于每个key里面的细分,string.split(",")就行,按照你的需求来~
+ line.substring(3) 改成 line ,没注意,直接截取需要判断一下~
Sunyiban 2018-02-01
  • 打赏
  • 举报
回复
File file = new File("F:/temp.txt");
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        String line = "";
        // 将所有分类初始化为string对象用于保存
        Map<String, String> resultMap = new HashMap<String, String>();
        resultMap.put("FN", "");
        resultMap.put("VR", "");
        resultMap.put("PT", "");
        resultMap.put("AU", "");
        resultMap.put("AF", "");
        resultMap.put("TI", "");
        resultMap.put("SO", "");
        resultMap.put("LA", "");
        resultMap.put("DT", "");
        resultMap.put("DE", "");
        resultMap.put("AB", "");
        String start = "";
        while ((line = reader.readLine()) != null) {
            // 截取每行前三个字母(根据你的要求修改截取长度)
            if (line.substring(0, 3).trim().length() > 0) {
                start = line.substring(0, 3).trim();
            }
            resultMap.put(start, resultMap.get(start) + line.substring(3));
        }
        reader.close();

        for (Entry<String, String> keySet : resultMap.entrySet()) {
            System.out.println(keySet.getKey() + ":" + keySet.getValue());
        }
这个方法,MAP里面的值根据你的txt来修改,然后保存到数据库字段对应MAP的key就行。至于每个key里面的细分,string.split(",")就行,按照你的需求来~

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧