Frage von minemon, 25

Wie kann ich ein \ in der Eingabe meines Programmes erkennen lassen?

Ich habe ein Programm geschrieben bei dem man einen String eingibt und dann macht es halt was. Die frage ist nur, wie kann ich ein \ in der Eingabe verwenden ohne dass es als escape character gesehen wird? Und ohne dass ich ein \ eingeben muss, ich weiß dass man einen String mit Pattern.quote() alle sonderzeichen ignoriren kann, jedoch weiß ich nicht wie ich das bei der eingabe anwenden kann. Ich benutze BlueJ und es kommt sonst immer nur "illegal escape character"

Edit: Ich weiß dass es mit \\ als \ erkannt wird, das Problem ist aber, ich habe eine 100Mb große Textdatei die es zu verarbeiten gilt, und etwa 1/3 aller Zeichen sind \. Ich muss es so eingeben wie es ist und so soll es auch erkannt werden.

Expertenantwort
von KnusperPudding, Community-Experte für Java, 9

Das eigentliche Problem hast du ja bereits selbst gelöst:

Wenn du "\" Abfangen willst, solltest du: "\\" verwenden.

Den Bezug auf die Textdatei wiederum verstehe ich nicht. Du schreibst doch von einer "Eingabe", also meinst du damit eine Eingabe durch den Benutzer? Diese wäre ja erstmal nicht an eine Textdatei geknüpft.

Kannst du bitte genauer erläutern was es mit deinem Problem auf sich hat?

Kommentar von minemon ,

Nun ich hatte im sinn den text zu kopieren und dann einzufügen

Kommentar von KnusperPudding ,

von wo kopieren und wo einzufügen? 

aus einer Datei in ein Textfeld?

Aus einem Textfeld in eine Datei?

Aus der Zwischenablage?

Antwort
von EyeBook888, 7

Vielleicht gibt es die Möglichkeit den \ erstmal zu ersetzen, entweder im Programm oder vorher in einem Textbearbeitung Programm.

Antwort
von kolmappierkolle, 14

Einfach zweimal \ eingeben. Z.B. "Test \\ Test" wird als "Test \ Test" erkannt.

Kommentar von minemon ,

Ich weiß dass das geht, das Problem ist aber, ich habe eine 100Mb große Textdatei die es zu verarbeiten gilt, und etwa 1/3 aller Zeichen sind \. Ich muss es so eingeben wie es ist und so soll es auch erkannt werden.

Antwort
von DexterNemrod, 6

\ als Escape-Charakter hat nur* für den Kompilierungsvorgang eine Bedeutung. Sobald dein Code in den Bytecode übersetzt wurde, ist es ein Zeichen wie jedes andere. Wenn du im Code ein Stringliteral definierst als "\\", so macht der Compiler daraus eine Konstante, die nur aus dem Zeichen \ besteht.

Dein Programm wird also nicht anfangen, die Backslashes als seltsame Escapesequenzen zu behandeln.

* Ausnahme: Wenn du die Strings als ein Format parst, was selbst wieder Escape-Sequenzen kennt (z.B. Reguläre Ausdrücke)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten