试图在字符串中的每个元音前增加一个字符

问题描述:

我想在一个字每一个元音前插入一个“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"); 
+1

这里没有捕获的组,'$ 1'是什么? – Maroun

+0

@MarounMaroun - 正确!谢谢 – Amit

您正则表达式更改为:

(?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