当前位置:  开发笔记 > 编程语言 > 正文

BufferedReader中的字符串没有拆分?

如何解决《BufferedReader中的字符串没有拆分?》经验,为你挑选了1个好方法。

现在我正在为一个游戏编写一个小的聊天历史插件,其中我想保存所有消息以及它在文件中发送的时间,这是完美的,但是在阅读它时我遇到了一些问题. 变量: history = new HashMap(); 这是我加载消息的方式:

public static void load(){
    File f = new File(config.getString("file"));
    if (!f.exists()){
        try {
            f.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    try{
        BufferedReader br = new BufferedReader(new FileReader(f));
        String line;
        while ((line = br.readLine())!=null){
            String date = line.split(" ")[0];
            for (int i = 0; i < line.split(" ").length; i++){
                System.out.print(i+"="+line.split(" ")[i]+" ");
            }
            if (date.split(",")[0].split(".").length == 0) continue;
            line = line.replaceAll(date+" ", "");
            history.put(fromString(date), line);
        }
        br.close();
    }catch(IOException e){
        e.printStackTrace();
    }
}

这是我在文件中写的:

09.01.17,18:45:26 §6[RoflFrankoc] §cHi
09.01.17,18:45:30 §6[RoflFrankoc] §cHello world

现在我的问题:该行if (date.split(",")[0].split(".").length == 0) continue;正在停止添加行history.没有它我得到一个ArrayOutOfBoundsError:0.这些行

for (int i = 0; i < line.split(" ").length; i++){
    System.out.print(i+"="+line.split(" ")[i]+" ");
}

我正在检查它是否正确读取,是的,输出:

0=09.01.17,18:45:30
1=§6[RoflFrankoc]
2=§cHello
3=world
0=09.01.17,18:45:26
1=§6[RoflFrankoc]
2=§cHi

(§c和§6是API中的颜色代码,我正在使用SpigotAPI for Minecraft)



1> Nicolas Filo..:

该字符.是一个特殊字符,如果您想String使用点作为分隔符进行拆分,则需要使用2个反斜杠将其转义为下一个:

if (date.split(",")[0].split("\\.").length == 0) continue;

实际上请记住,该方法split(String regex)需要将正则表达式作为参数.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有