Vokale am Ende von Wörtern löschen

Stiga

Mitglied
Hallo
die Aufgabe ist, man soll am Ende von Wörtern in einem String die Vokale löschen, aber nur die hinteren.

Java:
	private static StringBuilder encode(String str) {
		StringBuilder s = new StringBuilder(str);
				
		// a, e, i, o, u am Ende der Wörter entfernen

		for(int i= s.length()-1;i>=0;i--){
			if(s.charAt(i) == 'a' || s.charAt(i) == 'A'){
				s.delete(i,i+1);continue;
			}
			if(s.charAt(i) == 'e' || s.charAt(i) == 'E'){
				s.delete(i,i+1);continue;
			}
			if(s.charAt(i) == 'i' || s.charAt(i) == 'I'){
				s.delete(i,i+1);continue;
			}
			if(s.charAt(i) == 'o' || s.charAt(i) == 'O'){
				s.delete(i,i+1);continue;
			}
			if(s.charAt(i) == 'u' || s.charAt(i) == 'U'){	
				s.delete(i,i+1);continue;
			}
		}

Bei meinem Versuch werden allerdings ALLE Vokale gelöscht.
🙁
 
Das Problem ist, dass zum Beispiel bei dem erfundenen Wort 'Agie'
i und e gelöscht werden sollen, Ag aber nicht
am Ende soll Ag also übrigbleiben
 
Dann wirst du wohl im Programm abbrechen muessen, sobald das erste Mal ein Konsonant nach einem Vokal auftaucht. Deine Vokale kannst du dir uebrigens auch in eine Liste/Array oder aehnliches packen und diese dann durchgehen, spart ein wenig Platz.
 
Java:
for(int i= s.length()-1;i>=0;i--){
            if(s.charAt(i) == 'a' || s.charAt(i) == 'A'){
                s.delete(i,i+1);continue;
            }
            else if(s.charAt(i) == 'e' || s.charAt(i) == 'E'){
                s.delete(i,i+1);continue;
            }
            else if(s.charAt(i) == 'i' || s.charAt(i) == 'I'){
                s.delete(i,i+1);continue;
            }
            else if(s.charAt(i) == 'o' || s.charAt(i) == 'O'){
                s.delete(i,i+1);continue;
            }
            else if(s.charAt(i) == 'u' || s.charAt(i) == 'U'){   
                s.delete(i,i+1);continue;
            }
else{ //Letzter Konsonant, beende Schleife
break;
        }
 
ich hätte hier anstatt charAt() eher substring() und dann equalsIgnoreCase() genommen ...
 
oder halt...

Java:
String strAbgeschnitten = "testeiuao".replaceFirst("[aeiou]*$", "");
 
Der Test auf einen Vokal geht viel kürzer:
Java:
if ("aeiouAEIOU".indexOf(s.charAt(i)) != -1) {...}
 

Zurück
Oben