从原始txt文件读取字符串

时间:2018-07-20 15:42:49

标签: java android string java.util.scanner

我有一个带分隔符的原始txt文件,用于分隔文本。要接收文本,我使用扫描仪:

int textid = getResources().getIdentifier(word, null, this.getPackageName());
            Scanner ch = new Scanner(getResources().openRawResource(textid));

打开的文件正确。当我开始接收信息时,需要阅读它,直到获得“ $”为止。

            while (ch.hasNext()) {
                    str = ch.next();
                    boolean flag = (str.equals("$"));
                    while (!(str.equals("$"))) {
                        str = ch.next();
                    }

问题在于,当str等于“ $”(通过断点检查)时,标志等于“ false”。但是,如果我初始化String m =“ $”并检查flag = m.equals("$")标志等于“ true”。还尝试使用str != "$",但没有帮助。 我的猜测是Scanner.next()返回了另一种类型,但这似乎很奇怪。

2 个答案:

答案 0 :(得分:0)

这可能会对您有所帮助。

第一个next()读取多个字符,直到找到空格。

遍历str中的每个字符以查看其是否为'$'。然后,当您找到它时,做任何您想做的事。

while (ch.hasNext()) {
        String str = ch.next();
        for(int i = 0; i<str.length(); i++) {
            if(str.charAt(i) == '$') {
                //do something
            }
        }
    }

答案 1 :(得分:0)

当您的代码读取"$"时,它将中断内部循环。当它从外循环开始时,您将再次调用ch.next(),它将覆盖"$"中的前一个str。这可能是将flag设置为false的原因。仅当它是文件中的第一件事时,它才会检测到"$"

此外,您可能想再次在内部循环中检查ch.hasNext()