正则应用--java算法
文章目录
- 代码网址
- 题目
- 用例
- 解答
代码网址
https://gitee.com/zfranklin/java-intelli-j/blob/master/OD/src/C13My.java
题目
用例
解答
public static String getResult(String s) {
String[] words = s.split(" ");
for (int i=0;i<words.length;i++) {
Matcher matcher = Pattern.compile("[aeiouAEIOU]").matcher(words[i]);
if (matcher.find()) {
words[i] = matcher.replaceAll("*");
} else {
char[] cArr = words[i].toCharArray();
char tmp = cArr[0];
cArr[0] = cArr[cArr.length-1];
cArr[cArr.length-1] = tmp;
words[i] = new String(cArr);
}
}
return String.join(" ",words);
Pattern 类代表一个编译好的正则表达式。Pattern.compile 方法用于将给定的正则表达式字符串编译成一个 Pattern 对象。
[aeiouAEIOU] 是一个正则表达式,它表示匹配任意一个元音字母(大小写均可)。
Pattern 对象的 matcher 方法会接受一个字符串作为参数,这里是 words[i],然后返回一个 Matcher 对象。
这个 Matcher 对象会与传入的字符串 words[i] 关联起来,后续可以利用它对该字符串进行正则匹配操作。
声明了一个 Matcher 类型的变量 matcher,用于存储 Pattern.compile(“[aeiouAEIOU]”).matcher(words[i]) 返回的 Matcher 对象。
查找匹配项:使用 Matcher 的 find() 方法可以在字符串中查找下一个匹配正则表达式的子串。例如在原代码里,matcher.find() 用于判断 words[i] 中是否存在元音字母。
替换匹配项:使用 Matcher 的 replaceAll() 方法可以将字符串中所有匹配正则表达式的子串替换为指定的字符串。原代码中 matcher.replaceAll(“*”) 把 words[i] 里的所有元音字母替换成了 *。