在Java中获取元音出现的正则表达式?

die*_*lar 5 java regex text

为了编写 ID 生成器,我必须获得第一个元音外观,而忽略姓氏中的第一个字母。

我编码:

public static Character primeraVocal(String apellido) {

    for (Character c : apellido.toUpperCase().substring(1).toCharArray()) {
        if (c.equals('A') || c.equals('E') || c.equals('I') || c.equals('O') || c.equals('U'))
            return c;
    }

    return '!';
}
Run Code Online (Sandbox Code Playgroud)

但是我知道这将是使用正则表达式的一行代码。它会是什么样子?

Gar*_*ero 3

当您想忽略第一个字母时,此代码将帮助您实现这一点。

\n\n
    Pattern pattern = Pattern.compile("[\\\\w]([aeiou\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa6\xc3\xa7\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb3\xc3\xb4\xc3\xb5\xc3\xb8\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc])", Pattern.CASE_INSENSITIVE);\n    Matcher matcher = pattern.matcher("Aguilar");\n    if (matcher.find()) {\n        return String.valueOf(matcher.group(1));\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

您还可以使用此方法来标准化您返回的String. 因此,当您获得重音元音时,您可以使用标准化值来创建您的 ID...

\n\n
public static String unAccent(String s) {\n    //http://www.rgagnon.com/javadetails/java-0456.html\n    String temp = Normalizer.normalize(s, Normalizer.Form.NFD);\n    Pattern pattern = Pattern.compile("\\\\p{InCombiningDiacriticalMarks}+");\n    return pattern.matcher(temp).replaceAll("");\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

请在此处查看工作示例... https://ideone.com/gaGbtF

\n