为了编写 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)
但是我知道这将是使用正则表达式的一行代码。它会是什么样子?
当您想忽略第一个字母时,此代码将帮助您实现这一点。
\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 }\nRun Code Online (Sandbox Code Playgroud)\n\n您还可以使用此方法来标准化您返回的String. 因此,当您获得重音元音时,您可以使用标准化值来创建您的 ID...
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}\nRun Code Online (Sandbox Code Playgroud)\n\n请在此处查看工作示例... https://ideone.com/gaGbtF
\n