Java-如何查看一个字符是否匹配多个字符?

Java-如何查看一个字符是否匹配多个字符?,java,arrays,char,stringbuilder,Java,Arrays,Char,Stringbuilder,Java代码 StringBuilder sb = new StringBuilder(""); char[] vowels = { 'a', 'e', 'i', 'o', 'u' }; while (true) { if(!(sb.charAt(0).matches(vowels))) <---- Need help { sb.append(scan.nextLine()); break;

Java代码

StringBuilder sb = new StringBuilder("");

    char[] vowels = { 'a', 'e', 'i', 'o', 'u' };

    while (true) {
        if(!(sb.charAt(0).matches(vowels))) <---- Need help {
            sb.append(scan.nextLine());
            break;
        }
        else {
            sb.delete(0, sb.length()-1);
            sb.append(scan.nextLine());
        }
    }
StringBuilder sb=新的StringBuilder(“”);
char[]元音={'a','e','i','o','u'};
while(true){

如果(!(sb.charAt(0).匹配(元音))我使用正则表达式的最佳方式如下:

Matcher matcher = Pattern.compile("[aeiou]").matcher(str);

另一个选项是使用集合集

Set<Character> myVowelList = new HashSet<>(Arrays.asList('a', 'e', 'i', 'o', 'u'));
String aRandomName = "sdadasdas";
if (myVowelList.contains(Character.toLowerCase(aRandomName.charAt(0)))) {
    System.out.println("Yes it is there!");
}
Set myvuellist=newhashset(Arrays.asList('a','e','i','o','u');
字符串aRandomName=“sdas”;
if(my元音列表.contains(Character.toLowerCase(aRandomName.charAt(0))){
System.out.println(“是的,它在那里!”);
}

您也可以使用位集

static BitSet vowels = new BitSet();

static {
    vowels.set('a');
    vowels.set('e');
    vowels.set('i');
    vowels.set('o');
    vowels.set('u');
}
然后当你想检查的时候,在一个方法里做

if (vowels.get(someChar)) {
}
使用
字符串的内置方法

String vowels = "aeiou";

if (vowels.indexOf(sb.charAt(0)) == -1/*not found*/) {
正如javadoc所说:

返回此对象表示的字符序列中第一次出现的字符的索引,如果字符未出现,则返回-1

试试这个

Scanner sc = new Scanner(System.in);
    int flag=0;
    char[] a = {'a','e','i','o','u'};
    System.out.println("Enter a word");
     String word=sc.next();
    for(int i=0;i<5;i++)
    {
        if(word.charAt(0) == a[i]){
            System.out.println("Starts with a vowel");
            flag=1;
        }
    }
    if(flag != 1)
    {
        System.out.println("Word Doesnt start with vowel");
    }
Scanner sc=新扫描仪(System.in);
int标志=0;
char[]a={'a','e','i','o','u'};
System.out.println(“输入单词”);
字符串字=sc.next();
对于(inti=0;i另一种方式

private static final char[] VOWELS = { 'a', 'e', 'i', 'o', 'u' };

public boolean startsWithVowel(String s) {
    char first=s.charAt(0);
    for (char c : VOWELS) if (c==first) return true;
    return false;
}
你可以使用正则表达式

StringBuilder sb = new StringBuilder("");

String vowelsRegEx = "[aeiou].*";
/* [aeiou] = First character: a or e or i or o or u
 * .* = All characters after the first: doesn't matter
 */

if(!sb.toString().matches(vowelsRegEx)) {
    sb.append(scan.nextLine());
    break;
}
else {
    sb.delete(0, sb.length()-1);
    sb.append(scan.nextLine());
}

如果您不熟悉正则表达式,您可以轻松地在

上测试正则表达式字符串。是否有更简单的方法,因为老实说,这超出了我的知识范围,您可以使用switch case。