2016-07-16 8 views
-2

Das obige ist der Code, den ich bisher geschrieben habe. Derzeit, wenn ich das Programm ausgeführt habe, passiert nur, dass der Benutzer nach seiner Eingabe gefragt wird, und dann wird der eingegebene Wert wiederholt. Daher funktioniert die Zeichenersetzung nicht, ich hoffte, jede eingegebene Zeichenfolge von A-Z, a-z-Zeichen zu entfernen und sie durch Leerzeichen zu ersetzen.Löschen von Zeichen aus einer Zeichenfolge in Java

Leider dies funktioniert nicht

+6

Sie sind nicht den Wert des Druckens 'replace' – wakjah

+1

Während frühere Kommentar wahr ist, dass ist nicht, wie Sie die 'ersetzen' -Methode verwenden, es sei denn Sie buchstäblich die Zeichenfolge ersetzen wollen "" AZ, AZ "(Komma enthalten und alles) –

+0

Ok, wie würde ich dann den Wert von ersetzen drucken ...? –

Antwort

0

Es gibt zwei Dinge, die ein bisschen seltsam erscheinen.

Zuerst as stated by @wakjah, Sie drucken nicht die Zeichenfolge mit den Zeichen ersetzt. Sie drucken die Zeichenfolge mit dem eingegebenen Wert.

Zweitens glaube ich nicht, dass so die Ersetzung Methoden funktioniert. Die Methode replace verwendet zwei Parameter: den alten Wert, den Sie ersetzen möchten, und den, mit dem Sie ihn ersetzen möchten. Also was entered_value.replace("a-z, A-Z", ""); bedeutet, ist, wenn der String enthält "a-z, A-Z" (es muss diese ganze Zeichenfolge übereinstimmen), dann ersetzen Sie es durch "".

Zum Beispiel die Zeichenfolge "Hello, World!" bleibt gleich, weil es keine Übereinstimmung für die gesamte Zeichenfolge "a-z, A-Z" gibt.
Aber "Hello a-z, A-Z is going to be replaced" wird "Hello is going to be replaced" werden.

Eine Möglichkeit, dies zu tun, ist mit der replaceAll Methode. Dazu wird ein Regex verwendet, mit dem das gesamte Alphabet abgeglichen werden kann.

+0

Ich dachte, dass die System.out.println (eingegebene_Wert); Zeile war nur Angabe der Daten nach der Bearbeitung wurde entschuldigt –

+0

Kein Problem, wir sind hier um zu helfen :) – OmerSakar

1

Versuchen

String replace = entered_value.replaceAll("[A-Za-z]+",""); 
System.out.println(replace); 

Aufteilung der Regex:

  • [...] = Zeichenklasse:
  • AZ = Abkürzung für ABC zwischen den Klammern eines der Zeichen übereinstimmen .. .XYZ
  • az = Kurzanleitung für abc ... zyz
  • x + = Spiel ein oder mehrere aufeinanderfolgende x (die x wobei in diesem Fall die Zeichenklasse klammert ganze)
+1

Warum '*'? '+' ergibt hier mehr Sinn. – Pshemo

+2

Vielleicht möchten Sie erklären, was die Syntax der Regex für OP –

+0

@ pshemo bedeutet, danke für das Heads-up; nicht das erste Mal, dass ich diesen Fehler gemacht habe ... –