从Android原始资源文件中扫描句子

时间:2013-02-24 00:17:40

标签: java android java.util.scanner android-resources

我在Android res / raw文件夹中添加了一个示例文本文件,我正在尝试将该文件的每一行添加到String数组列表中。

例如,假设示例文本文件包含以下行

  

第一行样本

     

第二行示例

     

第三行样本

我想将这三个句子作为三个字符串添加到字符串数组列表中。我尝试了以下代码:

List<String> sampleList = new ArrayList<String>();    
Scanner s = null;
s = new Scanner(getResources().openRawResource(R.raw.sample));
while (s.hasNextLine()){
    sampleList.add(s.next());
}
s.close();

上面的代码在数组列表中添加了每个单词,结果是数组大小为9而不是添加每个句子的预期数组大小为3.感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

使用Scanner#nextLine()代替Scanner#next()

sampleList.add(s.nextLine());

扫描仪使用空格作为默认分隔符。 Scanner#next()查找并返回此扫描程序中的下一个完整令牌。完整的标记之前和之后是与分隔符模式匹配的输入。

您还可以使用Scanner#useDelimiter(delim)将扫描仪的分隔符设置为下一行(\ n)。

s = new Scanner(getResources().openRawResource(R.raw.sample)).useDelimiter("\n");
while (s.hasNextLine()){
   sampleList.add(s.next());
}

现在您可以使用Scanner.next(),因为它使用下一行(\ n)作为分隔符。

答案 1 :(得分:1)

而不是使用

s.next()

使用

s.nextLine()

Scanner.nextLine