试图在字符串中的每个元音前增加一个字符
问题描述:
我想在一个字每一个元音前插入一个“AB”试图在字符串中的每个元音前增加一个字符
例如,如果用户输入字:火 它必须被更改为: fabirabe 但我的代码只是在abfire之前输入ab。我该如何解决这个问题?
这里是我到目前为止的代码:
import java.util.Scanner;
public class Foothill
{
// class variables shared by more than one method
String prompt;
static String strUserResponse;
// main method
public static void main (String[] args)
{
giveInstructions();
getUserInput();
convertToTurkeyIrish();
vowelCounter();
}
public static String convertToTurkeyIrish()
{
String turkeyIrish = strUserResponse;
String turkeyIrish2;
turkeyIrish2 = "ab" + strUserResponse.replaceAll("(aeiouAEIOU)", "$1ab");
System.out.println("Word In Turkey Irish: " + turkeyIrish2);
return turkeyIrish;
}
public static void vowelCounter()
{
int vowel = 0;
strUserResponse.length();
char vowels;
vowels = ' ';
for (int j = 0; j <= strUserResponse.length() - 1 ; j++)
{
vowels = strUserResponse.charAt(j);
if ((vowels == 'a') || (vowels == 'A') || (vowels == 'e') || (vowel == 'E') || (vowel == 'i')|| (vowels == 'I') || (vowels == 'o') (vowels == 'O') || (vowel == 'u') || (vowels == 'u'))
{
System.out.println("Vowels in " + strUserResponse + ": " + vowel++);
}
}
}
}
答
你的正则表达式是错误的,所以是替换字符串。试试这个:
strUserResponse.replaceAll("([aeiouAEIOU])", "ab$1");
答
您正则表达式更改为:
(?i)(a|e|i|o|u)
,并更换到:
ab$1
您当前的正则表达式是aeiouAEIOU
相匹配字符序列:“aeiouAEIOU ”。
测试:
System.out.println("fire".replaceAll("(?i)(a|e|i|o|u)", "ab$1"));
// fabirabe
或者通过@amit的建议,你可以简单地使用一个字符类,写[aeiou]
。请注意,我使用(?i)
来指示正则表达式应该不区分大小写。
+0
非常感谢!我只是试过这个,它工作! – LearningtheRopes
这里没有捕获的组,'$ 1'是什么? – Maroun
@MarounMaroun - 正确!谢谢 – Amit