如何使用迭代器测试字符串是否以元音开头



我第一次使用迭代器编写了一个程序。我有一个字符串数组列表,并使用hasNext和next方法打印它们。我现在正试图使用前面的方法倒退,在这样做的同时,我应该检查每个元素,如果它以元音开头,我必须将其从列表中删除。这是我遇到问题的一段代码。

while (iterator.hasPrevious())
      {
         String s = iterator.previous();
         if (s.startsWith("a"))
         {
            iterator.remove();
         }   
         System.out.print(" "+ s);
      }

如有任何帮助,我们将不胜感激!

String vowels = "aeiou";
String testString = ... // Iterator String 
if (vowels.indexOf(Character.toLowerCase(testString.charAt(0))) != -1) {
    ... // Start char is vowel
}
要检查String是否以元音开头,可以使用正则表达式。

例如:

String[] input = {"abc", "def", "ghi"};
for (String s: input) {
    System.out.printf(""%s" starts with a vowel? %b%n", s, s.matches("(?i)^[aeiouy].*$"));
}

输出

"abc" starts with a vowel? true
"def" starts with a vowel? false
"ghi" starts with a vowel? false

在你的情况下

方法startsWith只接受一个文字,所以它不是您想要的。

相反,您可以在类中使用常量Pattern,例如:

static final Pattern STARTS_WITH_VOWEL = Pattern.compile("^[aeiouy]", Pattern.CASE_INSENSITIVE);

然后在你的循环中,你可以使用:

if (STARTS_WITH_VOWEL.matcher(s).find()) {
    ...
}

一种可读的方法是列出所有元音

Collection<Character> vowels = new HasSet<~>();
vowels.add('a');
vowels.add('e');
vowels.add('i');
vowels.add('o');
vowels.add('u');

那么你能做的就是

if (vowels.conatins(Character.toLowerCase(s)))
{
    iterator.remove();
}

只需更改if以包含更多条件

if(s.startsWith("a")|| if(s.startsWith"a")…)

最新更新