Android - 如何从识别器中获取结果以分别确定第1和第2个单词?

时间:2012-02-06 22:46:32

标签: java android

这是我的代码:


if (results.contains("search"))
{
    int firstSpaceEntry = 0, lastIndex = 0, index = 0;
    String tempString = "";
     
    for (String sExtract : myResults)
    {
        lastIndex = sExtract.length();
        firstSpaceEntry = sExtract.indexOf(" ");
         
        if (firstSpaceEntry < lastIndex)
        {
            tempString = sExtract.substring(firstSpaceEntry, lastIndex);
            myExtract.set(index, tempString);
             
            System.err.println(" index = "+index+" value = "+tempString);
             
            index++;
        }
    }
}

问题在于,当我说'搜索'时,它有效。但是当我说搜索+其他单词时它不起作用。 = /

1 个答案:

答案 0 :(得分:1)

首先 - 你可以完全省略“lastIndex”。如果没有找到,indexOf将返回-1,如果省略第二个参数,则substring将继续在行尾。

第二 - 虽然模糊细节(你是说结果变量在“搜索”时有效但在“搜索东西”时失败了吗?),你也可以尝试使用indexOf而不是contains。

第三 - “结果”是一个列表还是一个字符串?我在下面的代码中假设后者,但如果它是前者,则可以解释为什么“包含”仅在您使用“搜索”而没有其他单词时才有效。如果是这种情况,你需要循环遍历结果数组,并单独测试每个值是否包含/ startsWith / etc“search”。


if (results.indexOf("search") > -1)
{
    int firstSpaceEntry = 0, lastIndex = 0, index = 0;
    String tempString = "";
     
    for (String sExtract : myResults)
    {
        firstSpaceEntry = sExtract.indexOf(" ");
         
        if (firstSpaceEntry > -1)
        {
            tempString = sExtract.substring(firstSpaceEntry);
            myExtract.set(index, tempString);
             
            System.err.println(" index = "+index+" value = "+tempString);
             
            index++;
        }
    }
}