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

时间:2014-10-02 15:47:22

标签: java iterator

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

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

非常感谢任何帮助!

4 个答案:

答案 0 :(得分:6)

String vowels = "aeiou";
String testString = ... // Iterator String 
if (vowels.indexOf(Character.toLowerCase(testString.charAt(0))) != -1) {
    ... // Start char is vowel
}

答案 1 :(得分:2)

要检查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()) {
    ...
}

答案 2 :(得分:1)

这样做的可读方式是拥有所有元音的列表

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();
}

答案 3 :(得分:0)

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

if(s.startsWith(&#34; a&#34;)|| if(s.startsWith(&#34; A&#34;))...)