Entfernen Sie alle Vokale in einem string mit Java
Mache ich eine Hausaufgabe für meinen informatik-Kurs. Die Aufgabe ist es, eine Benutzer-Eingabe, entfernen Sie alle Vokale, und drucken Sie dann die neue Anweisung.
Ich weiß, ich könnte einfach tun, es mit diesem code:
string.replaceAll("[aeiou](?!\\b)", "")
Aber mein Lehrer will, dass ich mit geschachtelten if-und else if-Anweisungen zu erreichen, das Ergebnis. Jetzt bin ich mit so etwas wie dieses:
if(Character.isLetter('a')){
'do something'
}else if(Character.isLetter('e')){
'do something else'
Aber ich bin nicht sicher, was zu tun in der if
und else if
Aussagen. Soll ich löschen den Brief? Oder gibt es eine bessere Möglichkeit, dies zu tun?
Sehen, wie das ist, meine Hausaufgaben will ich nicht vollständige Antworten nur Tipps. Danke!
Nur Fragen, könnten Sie erklären, Ihre regex? Es scheint zu kompliziert für die angebliche Aufgabe es ist, zu lösen.
Es entfernt alle Vokale "aeiou" , nicht gefolgt von einem Zeichen, endet ein Wort.
Es entfernt alle Vokale "aeiou" , nicht gefolgt von einem Zeichen, endet ein Wort.
InformationsquelleAutor Chris Frank | 2012-10-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Charakter.isLetter(char) sagt Ihnen, ob der Wert, den Sie geben, es ist ein Brief, das ist nicht hilfreich in diesem Fall, (Sie wissen bereits, dass "a" ist ein Buchstabe).
Werden Sie wahrscheinlich wollen, verwenden Sie den Gleichheitsoperator,
==
, um zu sehen, wenn Ihr Zeichen ist ein "a", wie:Können Sie alle Zeichen in einer Zeichenfolge in mehrere Möglichkeiten:
InformationsquelleAutor Brendan Long
Ich denke, was er will, ist für Sie zu Lesen, den string, erstellen Sie eine neue leere Zeichenfolge (nennen wir es
s
), Schleife über die Eingabe und fügen Sie alle Zeichen, die keine Vokales
(dies erfordert eineif
- Anweisung). Dann würden Sie einfach drucken Sie den Inhalt dess
.Edit: möchten Sie vielleicht zu prüfen, mit einem
StringBuilder
für dieses, weil die sich wiederholenden string-Verkettung kann die Leistung beeinträchtigen, aber die Idee ist die gleiche. Aber um ehrlich zu sein, bezweifle ich es machen würde, einen spürbaren Unterschied für diese Art der Sache.Ja, das ist es, was ich Suche. Und dann würde ich nur hinzufügen s zu meinem vorhandenen string?
Vielen Dank, bearbeitet.
Einige pseudocode
StringBuilder noVowels; for (int i =0; i < str.length; i++) {if !isVowel(str[i]{appendToBufer(str[i]))}}
Posten als pseudocode so können Sie immer noch Spaß haben mit den HausaufgabenFür eine Aufgabe wie diese Verwendung von StringBuilder ist übertrieben.. obwohl es besser für performance-sensitive code-Verkettung in Ordnung ist, in vielen Fällen.
InformationsquelleAutor arshajii
Ich denke, man kann Durchlaufen und die Zeichen überprüfen, ob dieser Vokal ist oder nicht, wie unten:
Seeing as this is my homework I don't want full answers just tips.
<--Guter Punkt. Ich konvertiert die Antwort in pseudo-code. Ist das jetzt gut?
InformationsquelleAutor Yogendra Singh
Wenn Sie wollen, es zu tun in O(n) Zeit
Wenn Sie dies tun, ist in Java Sie werden zusätzlichen Speicherplatz benötigen, um den Bau des neuen, String, etc.. Wenn Sie es tun, in C kannst du einfach beenden Sie den String mit einem null-Zeichen und das Programm komplett, ohne zusätzlichen Platz.
InformationsquelleAutor rmoh21
Ich glaube nicht, dass Ihr Lehrer wollte Sie anrufen
Character.isLetter('a')
weil es immertrue
.Die einfachste Möglichkeit, das Gebäude das Ergebnis ohne regexp ist mit einem
StringBuilder
und einswitch
- Anweisung wie folgt:Können Sie auch ersetzen Sie diese durch eine gleichwertige
if
wie diese:InformationsquelleAutor dasblinkenlight