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

Zurück
Oben