5

我对如何检查字符串是否多次包含相同的字母感到有些困惑。

ArrayList<String> words = new ArrayList<String>();

words.add("zebra");
words.add("buzzer");
words.add("zappaz");

假设我只想打印包含多个“z”的任何单词,因此只会打印“buzzer”和“zappaz”。我该怎么做?

4

4 回答 4

6

要测试一个字符串是否包含两个 z,您可以这样做:

 boolean ok = word.matches(".*z.*z.*")
于 2012-12-30T17:09:32.170 回答
6

indexOf返回字符串中一个字符的...索引。它还需要一个可选参数来指定搜索的位置。如果没有匹配,则返回-1。所以只需使用它两次:

s.indexOf(letter, s.indexOf(letter) + 1) > -1

有用!

(不过,为了效率,不妨检查一下第一个结果。)

于 2012-12-30T17:12:12.000 回答
4

一个聪明的解决方案可能是删除要搜索的字符并将结果字符串的长度与完整字符串进行比较。

ArrayList<String> words = new ArrayList<String>();

words.add("zebra");
words.add("buzzer");
words.add("zappaz");

for (String word : words) {
  // calculate the length difference
  if (word.length() - word.replace("z", "").length() > 1) {
    System.out.println(word);
  }
}

将打印:

buzzer
zappaz

效率不是很高,但它可以工作并且非常简单。

于 2012-12-30T17:13:15.597 回答
3
public static void main(String[] args) {

  String s = "bazzer";
  String news = s.replaceAll("z", "");

    if(news.length() < s.length() -1 ){
        System.out.println(s);
    }

  }
于 2012-12-30T17:12:24.243 回答