-1

我需要查看一个很长的字符串中是否有任何单词是单词“the”(然后计算发生了多少次)所以我将字符串拆分为列表的各个元素

String [ ] list1 = phrase1.split(" "); 

如何将列表中的各个元素与字符串“the”进行比较?

使用数组我会使用

int count = 0;
for (int i = 0; i < string.length; i++)
 {
   if (string[i].equals("the"))
   {
     count++;
   }
}

return count;

但是,你不能在这样的列表中调用和元素。我该怎么办?

我可以在列表中使用 equals 方法吗?

编辑: 我试图应用我收到的答案如下

static public int countWordsEqualTo( String [ ] list, int wordcount, String wordsearch)
    {
        int count = 0;
        String[] list1 = list.split(" ");
        for(String word: list1)
        {
            if (word.equals(wordsearch))
            {
                count++;
            }
        }

        return count;
    }

它不会编译。我做错了什么?

4

5 回答 5

1

您可以对数组和列表使用修改后的 for 循环

String[] list1 = phrase1.split(" "); 

int count = 0;
for (String item : list1)
 {
   if (item.equals("the"))
   {
     count++;
   }
}

return count;
于 2013-10-25T04:51:59.093 回答
0

您实际上可以使用equals列表,但不能按照您的意思或想要的方式使用。此外,您有一个String[],一个字符串数组,而不是一个List<String>(字符串列表)。

您想要做的是遍历该数组并将每个项目(一个单词)与“the”进行比较:

int count = 0;
for (String word : list1) {
   if (word.equals("the")) {
     count++;
   }
}

return count;
于 2013-10-25T04:41:24.037 回答
0

您正在将不正确的变量 ''string[i]' 与“the”进行比较。将您的 list1 重命名为字符串或更改以下两个语句,如下所示:

for (int i = 0; i < list1.length; i++)

if (list1[i].equals("the"))
于 2013-10-25T04:56:24.330 回答
0

有很多方法可以实现

  • 使用下面的代码

    String str = "abc the def the ghi the";
    String find = "the";
    
    int i = 0;
    int count = 0;
    while(str.indexOf(find, i) != -1) {
        count++;
        i = str.indexOf(find, i) + find.length();
    }
    System.out.println(count);
    
  • 如果你想使用 apache commons lang library[org.apache.commons.lang.StringUtils] 那么你可以做一些像

    String str = "abc the def the ghi the";
    String find = "the";
    int count = StringUtils.countMatches(str, find)
    System.out.println(count);
    
于 2013-10-25T05:58:32.850 回答
0

这是对您的编辑的回答

代码不会编译成功,因为

String[] list1 = list.split(" "); //here list is String[]   

String#split围绕给定正则表达式的匹配拆分此字符串。您不能调用 String[] 的数组

您有String[] list,想要检查给定字符串数组中的字符串“the”,然后只需使用ArrayUtils#contains()

public static boolean contains(Object[] array,
                           Object objectToFind)

检查对象是否在给定的数组中。

如果传入空数组,则该方法返回 false。

参数:
array - 要搜索的数组
objectToFind - 要查找的对象

返回:
如果数组包含对象,则为 true

使用ArrayUtils类你需要下载jar。您可以从此链接下载

您还想计算给定字符串中字符串“the”的出现次数,然后可以使用StringUtils#countMatches(java.lang.String, java.lang.String)

public static int countMatches(String str,
                           String sub)

计算子字符串在较大字符串中出现的次数。

null 或空 ("") 字符串输入返回 0。

StringUtils.countMatches(null, *)       = 0
StringUtils.countMatches("", *)         = 0
StringUtils.countMatches("abba", null)  = 0
StringUtils.countMatches("abba", "")    = 0
StringUtils.countMatches("abba", "a")   = 2
StringUtils.countMatches("abba", "ab")  = 1
StringUtils.countMatches("abba", "xxx") = 0

参数:
str - 要检查的字符串,可能为 null
sub - 要计数的子字符串,可能为 null

返回:
出现的次数,如果任一 String 为 null,则为 0

单击此处获取StringUtils课程的罐子

于 2013-10-25T05:17:13.483 回答