Reguläre Ausdrücke: Ersetzen von nicht definierten Zeichen
-
Hi!
Ich versuche mich gerade etwas in regulären Ausdrücken und benötige etwas Hilfe.
Aber erstmal etwas Code:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexTest { private static String m_strRegex = "a-zA-Z0-9"; private static String m_strString = "abcdefgÄÜÖßabcdefg0123456789"; private static String m_strReplacement = "?"; public static void main (String[] args) { Pattern oPattern = Pattern.compile (m_strRegex); Matcher oMatcher = oPattern.matcher (m_strString); System.out.println (oMatcher.replaceAll (m_strReplacement)); } }
Ich möchte in "m_strRegex" alle Zeichen definieren die gültig sind. Sind in "m_strString" Zeichen enthalten, die nicht gültig sind, sollen diese durch "m_strReplacement" ersetzt werden. In diesem Beispiel sollten ÄÜÖß ersetzt werden, da sie nicht im Bereich von a-zA-Z sind.
Jemand eine Idee, wie ich das am effektivsten realisieren kann?
-
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexTest { private static String m_strRegex = "[ÄÜÖß]"; private static String m_strString = "abcdefgÄÜÖßabcdefg0123456789"; private static String m_strReplacement = "?"; public static void main (String[] args) { Pattern oPattern = Pattern.compile (m_strRegex); Matcher oMatcher = oPattern.matcher (m_strString); System.out.println (oMatcher.replaceAll (m_strReplacement)); } }
ps: natürlich zu kurz, nun ein hash und den jeweiligen buchstaben ersetzen mit ae, oe etc.
pps: eventuell ohne regex und mit replace, macht hier vielleicht mehr sinn.
-
oder einfach
[^a-zA-Z0-9]
als Pattern verwenden
-
@ elise
Danke, aber da müsste ich alle Zeichen eintragen die ungültig sind, da dies bei Unicode und co. etwas ordentlich mehr werden, als die, die gültig sind und ich gefahr laufe, einige zu "vergessen" einzutragen, ist deine Lösung leider nicht sehr für meinen Fall passend.@ zwutz
Danke, ich probier es mal!
-
hm, ich dachte, du willst ersetzen?
Ä => AE
...
...dann brauchst du sowieso ein hash, das die ersetzung durchführt.
greets