拉丁猪文字游戏——这是一个英语语言游戏。基本规则是将一个英语单词的第一个辅音音素的字母移动到词尾并且加上后缀-ay(譬如“banana”会变成“anana-bay”):除了a、e、i、o、u,其余都是辅音
拉丁猪文字游戏,看到的第一眼想法就是正则表达式,如果你懂正则,那么我希望你可以试试。下面列出一个普通解决方法,以及两个正则表达式解决方法(正则表达式有问题,参考思路就好了)
//普通解决方法
private static void process(String content) {
String str = "aeiou";
String newStr = "";
for (int i = 0; i < content.length(); i++) {
char con = content.charAt(i);
int index = str.indexOf(con);
if (index == -1) {
newStr = content.substring(0, i) + content.substring(i + 1, content.length()) + "-" + con + "ay";
break;
}
}
System.out.println(newStr);
}
这个问题用正则解决应该是最简单的方法,但是很可惜下列两个方法经测试都有一点小问题
然而本人才疏学浅并无法解决问题 如有人解决希望能告知我一声
//正则1
public static void main(String[] args) {
String s = "apri";
System.out.println(s.replaceFirst("(.)(?!=[aeiou])(.*)", "拉丁猪文字:$2-$1ay"));
}
//正则2
private static void process(String content) {
String regex = "^(?=[\\w&&[^\\d]]+$)(?i)(?<head>[aeiou]*)(?<firstVowel>[^aeiou])(?<tail>.*$)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);
if (matcher.matches()) {
content = matcher.group("head") + matcher.group("tail") + "-" + matcher.group("firstVowel") + "ay";
}
System.out.println(content);
}
相信每个人都有自己的一套解决方法,如果你有不同的,更好的思路,或对正则的理解,欢迎与我交流,甚至要求我修改。
代码合集:https://github.com/FanceTsui/Project.git
——Fance Tsui