2013-12-01 4 views
0

Пытается решить проблему, когда необходимо удалить гласные слов (кроме начальной буквы, которую невозможно удалить, даже если это гласный). Например:Удаление гласного с пользовательского ввода

Желаемое без мебели квартира в тихом жилом районе

становится: Dsrbl unfrnshd FLT в кварт rsdntl ар

Я не уверен, как получить это совершенно правильно, но есть до сих пор. Любые советы относительно того, как справиться с этим, будут действительно оценены (без использования регулярного выражения).

import java.util.*; 
class VowelOmit 
{   
    public static void main (String [] args)   
    {     
     Scanner keyboard = new Scanner (System.in); 
     System.out.print ("Please enter a sentence: ");    
     String s = keyboard.nextLine(); 
     removeVowel(); 
    } 

private static void removeVowel (String sent) 
{  
    String sent = "???"; for(int index = 0; index < s.length(); index++) 
    {  
     if(???) 
     {   
      System.out.println(s.charAt(index));  
     } 
    } 
} 
+1

Подумайте о стратегии и попытайтесь ее реализовать. Как бы вы сделали это без компьютера? –

+0

с помощью regex вы можете удалить всю гласную string.replaceAll ("[aeiou] \\ B", ""); –

+0

начальным гласным, вы имеете в виду первую букву в строке или первое падение гласного в любом месте строки? –

ответ

4

Почему бы просто не использовать регулярное выражение для достижения этого?

String input = "Desirable unfurnished flat in quiet residential area"; 
String pattern = "\\B[aeuioAEUIO]"; 
String result = input.replaceAll(pattern, "")); 

UPDATE: Перечитав этот вопрос, я понял, что сделал ошибку. Вы хотите сохранить гласную, если это первая буква в любом слове, а не только первая буква в строке. Я обновил код, чтобы сделать именно это.

+0

Извините, я пытаюсь решить это, не используя регулярное выражение; Я обновил этот вопрос, хотя изначально он вводил в заблуждение. – user3003605

0

Попробуйте с нечувствительным к регистру регулярное выражение (?i)[aeuio],

String input = "Desirable unfurnished flat in quiet residential areAEE"; 
String pattern = "(?i)[aeuio]"; 
String result = input.charAt(0) + input.substring(1).replaceAll(pattern, ""); 
System.out.println(result); 
0

Чтобы удалить первую частоту с гласной, в отличие от первой буквы, если это гласный, разделить строку на две части. Сначала получите индекс первого гласного. Затем удалите гласные из подстроки после этого.

String initWithoutVowels = s.split("[aAeEiIoOuU]")[0]; 
if (s.length() <= initWithoutVowels.length() + 1) return s; //s doesn't need modification 
return s.substring(0, initWithoutVowels.length() + 1) + s.substring(initWithoutVowels.length() + 1).replace("[aAeEiIoOuU]", ""); 
Смежные вопросы