【问题标题】:Finding a specific line in Java using split()使用 split() 在 Java 中查找特定行
【发布时间】:2012-10-21 09:42:54
【问题描述】:

我有一个包含如下文本行的文件:

[A]

这是一行。

这是另一行。

[B]

第三行。

...

等等。我想将此文件读入 Java 并查找仅包含 [A] 等的行以供进一步参考。我试过了:

Resources res = getResources();
InputStream in_s = res.openRawResource(R.raw.texts);
byte[] b = new byte[in_s.available()];
in_s.read(b);
String textstring = new String(b);
String[] textarr = textstring.split("[\\r\\n]+");

然后:

int lineB = 0;
for (int i=0; i<textarr.length; i++) {
    if textarr[i].substring(0, 3) == "[B]") lineB = i;
 }

之后,行仍然为零。首先,我认为这与处理新行的方式有关(我使用的是 Windows),但我对 substring(0,3) 也没有运气。我希望这给我 lineB = 3,任何想法我做错了什么?

【问题讨论】:

  • 不要使用== 来比较字符串。使用equals(...) 方法。
  • 像魅力一样工作!非常感谢,我为此发疯了。
  • 不客气。这很重要的原因是因为 == 检查两个 objects 是否相同,这不是您感兴趣的。另一方面,equals(...)equalsIgnoreCase(...) 方法检查如果两个字符串以相同的顺序具有相同的字符,这就是这里的重点。

标签: java string split newline substring


【解决方案1】:

试试String.contains(CharSequence s)String.startsWith(String prefix)

编辑:哦,试试BufferedReader

BufferedReader in = new BufferedReader(new FileReader("foo.in"));
String line = "";
while ((line = in.readLine()) != null)
        if(line.startsWith("whatever")) ...

【讨论】:

    【解决方案2】:

    像这样使用String#startsWith

    int lineB = 0;
    for (int i=0; i<textarr.length; i++) {
        if (textarr[i].startsWith("[B]"))
           lineB = i;
    }
    

    【讨论】:

    • 谢谢,效果很好。 “==”不是比较字符串的好方法...你知道的越多!
    猜你喜欢
    • 2015-11-14
    • 2017-01-21
    • 2020-06-15
    • 2012-02-09
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多