我需要在四个字母的单词末尾搜索字符串中的元音。我可以做一个if-else树并单独搜索每个字母,但我想简化。
您通常会以这种方式搜索信件:
String s = four
if (s.indexOf ('i') = 4)
System.out.println("Found");
else
System.out.println("Not found");
我可以用{:1>替换indexOf
的参数:
s.indexOf ('a','e','i','o','u')
这将使一切变得更加容易。
不幸的是,我不能使用Regexp类,我只需要使用我们以前学过的东西。
答案 0 :(得分:3)
正则表达式?我相信这有效。 “任何3个字的字符后跟e i或u。”
Pattern p = Pattern.compile("\\w{3}[aeiou]?");
String test = "mike";
System.out.println("matches? " + p.matcher(test).matches());
好吧,如果你不能使用正则表达式,那么为什么不能使用EDIT:Modified来内联GaborSch的答案 - 我的替代算法非常接近,但使用char而不是创建另一个字符串是WAY更好!向GaborSch致敬!)
if(someString.length() == 4){
char c = someString.charAt(3);
if("aeiou".indexOf(c) != -1){
System.out.println("Gotcha ya!!");
}
}
答案 1 :(得分:3)
String s = "FOUR"; // A sample string to look into
String vowels = "aeiouAEIOU"; // Vowels in both cases
if(vowels.indexOf(s.charAt(3)) >= 0){ // The last letter in a four-letter word is at index 4 - 1 = 3
System.out.println("Found!");
} else {
System.out.println("Not Found!");
}
答案 2 :(得分:1)
尝试这种方式:
char c = s.charAt(3);
if("aeiou".indexOf(c) >= 0) {
System.out.println("Found");
} else {
System.out.println("Not found");
}
诀窍是你选择第4个字符并在所有元音的字符串中搜索 。
这是一款无Regexp的单线解决方案。
答案 3 :(得分:0)
这是String#matches(String)
的工作和适合的正则表达式:
if (s.matches(".*[aeiou]$")) {
/* s ends with a vowel */
}
如果不允许使用正则表达式,您可以为此定义一个函数:
static boolean endsWithVowel(String str) {
if (str == null || str.length() == 0) { /* nothing or empty string has no vowels */
return false;
}
return "aeiou".contains(str) /* str is only vowels */
|| endsWithVowel(str.substring(1)); /* or rest of str is only vowels */
}