java - 缓冲读取器找到特定的行分隔符然后读取该行

标签 java bufferedreader replaceall

我的程序需要从多行 .ini 文件中读取,我已经做到了读取以 # 开头的每一行并打印它。但我只想记录 = 符号后面的值。该文件应如下所示:

#music=true
#Volume=100
#Full-Screen=false
#Update=true

这就是我想要打印的内容:

true
100
false
true

这是我当前正在使用的代码:

@SuppressWarnings("resource")
public void getSettings() {
    try {
        BufferedReader br = new BufferedReader(new FileReader(new File("FileIO Plug-Ins/Game/game.ini")));
        String input = "";
        String output = "";
        while ((input = br.readLine()) != null) {
            String temp = input.trim();
            temp = temp.replaceAll("#", "");
            temp = temp.replaceAll("[*=]", "");
            output += temp + "\n";
        }
        System.out.println(output);
    }catch (IOException ex) {}
}

我不确定是否replaceAll("[*=]", "");真正意味着任何东西,或者如果它只是搜索所有这些字符。如有任何帮助,我们将不胜感激!

最佳答案

尝试以下操作:

if (temp.startsWith("#")){
  String[] splitted = temp.split("=");
  output += splitted[1] + "\n";
}

说明: 要处理仅以所需字符开头的行,请使用 String#startsWith 方法。当您有要从中提取值的字符串时,String#split 会将给定文本与您作为方法参数提供的字符分开。因此,在您的情况下,=字符之前的文本将位于数组中的位置0处,您要打印的文本将位于位置1处。

另请注意,如果您的文件包含许多以 # 开头的行,明智的做法是不要将字符串连接在一起,而是使用 StringBuilder/StringBuffer 将字符串添加在一起.

希望有帮助。

关于java - 缓冲读取器找到特定的行分隔符然后读取该行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21073810/

相关文章:

java - 正则表达式中的电子邮件之间允许有空格

java - 在字符串java中插入关于双引号的双引号?

java - 优化新的BufferedReader(输入流)

java - 正则表达式 : Insert space in the string after a matched pattern

使用 {} 大括号的 Java String replaceAll() 方法

java - string.replaceAll 切割字符 50% 的时间

java - XML 签名引用摘要使用父命名空间

java - 无法为对象解析此符号

Java,从文件中进行模式匹配和排序

java - java读取文本文件并将数字存储在不同的数组中