Metacharacter ? near 0 - was ist das denn?

Status
Nicht offen für weitere Antworten.

MPW

Top Contributor
Hallöle,

ich kann für einen Abgleich von Eingabedaten mit einer Datei keine Sonderzeichen/Satzzeichen oder sonst was gebrauche,
also mach ich die einfach weg:

Code:
	String reinigen(String toClean) {
		toClean = toClean.toLowerCase();
		toClean = toClean.trim();
		String[] oldChar = { "?", "!", ".", ";", ",", ":", "-", "_", "(", ")", "{", "}", "[", "]", "\"", "=", "'" };
		for (String c : oldChar) {
			toClean = toClean.replaceAll(c, "");
		}
		return toClean;
	}

leider kanllst jedes mal schon beim Fragezeichen...
Und ich kapier überhaupt nicht warum, war ist denn da so schlimm dran, wenn ein Fragezeichen am Anfang steht..(mal abgesehen davon, dass es das letzte Zeichen in der "zu bereinigenden" String-Kette war...


Code:
Exception in thread "AWT-EventQueue-1" java.util.regex.PatternSyntaxException: D
angling meta character '?' near index 0
?
^
        at java.util.regex.Pattern.error(Pattern.java:1650)
        at java.util.regex.Pattern.sequence(Pattern.java:1787)
        at java.util.regex.Pattern.expr(Pattern.java:1687)
        at java.util.regex.Pattern.compile(Pattern.java:1397)
        at java.util.regex.Pattern.<init>(Pattern.java:1124)
        at java.util.regex.Pattern.compile(Pattern.java:817)
        at java.lang.String.replaceAll(String.java:2000)
        at Quasel.reinigen(Quasel.java:165)
        at Quasel.eingabe(Quasel.java:117)
        at Quasel$1.keyPressed(Quasel.java:38)
        at java.awt.Component.processKeyEvent(Component.java:5446)
        at javax.swing.JComponent.processKeyEvent(JComponent.java:2680)
        at java.awt.Component.processEvent(Component.java:5265)
        at java.awt.Container.processEvent(Container.java:1966)
        at java.awt.Component.dispatchEventImpl(Component.java:3955)
        at java.awt.Container.dispatchEventImpl(Container.java:2024)
        at java.awt.Component.dispatchEvent(Component.java:3803)
        at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.ja
va:1810)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboard
FocusManager.java:672)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeybo
ardFocusManager.java:920)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeybo
ardFocusManager.java:798)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFoc
usManager.java:636)
        at java.awt.Component.dispatchEventImpl(Component.java:3841)
        at java.awt.Container.dispatchEventImpl(Container.java:2024)
        at java.awt.Component.dispatchEvent(Component.java:3803)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:242)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:163)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

Wäre dankbar für Tipps...
 

MPW

Top Contributor
Also, danke für den Link..

Das mit dem markieren hab' ich nicht kapiert..wie genau, editier' mal bitte den Code:

Aber bedenke, das ich ja nicht weiß, was vor oder nach dem Fragezeichen ist, da es sich um eine usereingabe handelt?(Kompilieren geht ja auch...)

Code:
	String reinigen(String toClean) {
		toClean = toClean.trim();
		String[] oldChar = { "\"?", "!", ".", ";", ",", ":", "-", "_", "(", ")", "{", "}", "[", "]", "\"", "=", "'" };
		for (String c : oldChar) {
			toClean = toClean.replaceAll(c, "");
		}
		toClean = toClean.toLowerCase();
		return toClean;
	}

also das da oben scheint nicht wirklich zu funzen^^

Danke für weitere Tipss..
 

L-ectron-X

Gesperrter Benutzer
Ich dachte bei Maskierung an so etwas:
Code:
String[] oldChar = { "\?", "!", ".", ";", ",", ":", "-", "_", "(", ")", "{", "}", "[", "]", "\"", "=", "'" };
 

Sky

Top Contributor
L-ectron-X hat gesagt.:
Ich dachte bei Maskierung an so etwas:
Code:
String[] oldChar = { "\?", "!", ".", ";", ",", ":", "-", "_", "(", ")", "{", "}", "[", "]", "\"", "=", "'" };
"\\?"
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben