Alle unerlaubten Zeichen aus String entfernen

SeeSharpNewBee

Erfahrenes Mitglied
Hi,

ich möchte alle unerlaubten Zeichen aus eine String nach der eingabe entfernen, angefangen habe ich so:

Code:
searchWord = request.getParameter("sw").toString().replaceAll("[^A-Za-z0-9+-]", "");

Zulassen möchte ich nur "A-Z, a-z, 0-9 + -" sowie Umlaute. Wie mache ich das damit auch Umlaute zugelassen werden?

Danke!

//EDIT:

Wie bekomme ich es außerdem hin, das er mir bei dem obigen Code nicht alle Leerzeichen entfernt?

Danke!
 
Zuletzt bearbeitet:
Hallo,

schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

/**
 * @author Tom
 *
 */
public class OnlyValidCharactersExample {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String someText =" ABC12 ÄÜÖöä üß!#122 34567 890saklx xx###-- _aaaa-_bbbb+*s.";
		System.out.println(someText);
		System.out.println(someText.replaceAll("[_[^\\w\\däüöÄÜÖ\\+\\- ]]", "")); 
	}

}

Ausgabe:
Code:
 ABC12 ÄÜÖöä üß!#122 34567 890saklx xx###-- _aaaa-_bbbb+*s.
 ABC12 ÄÜÖöä ü122 34567 890saklx xx-- aaaa-bbbb+s

Gruß Tom
 
Hi,

danke für die Antwort, hat super funktioniert!

Ich würde aber jetzt gerne wissen, was der Unterschied zwischen
Code:
replaceAll("[^A-Za-z0-9+-]", "")

und

Code:
replaceAll("[_[^\\w\\däüöÄÜÖ\\+\\- ]]", "")

ist.

Zb.: warum du da "\\" drinnen hast usw.

Danke!
 
Moin!
Bei \w , handelt es sich um eine vordefinierte Characterklasse.
Statt \w könnte man auch [a-zA-Z_0-9] schreiben.
Und \\w muss man schreiben, da ein "\" eigentlich in Java ja eine Escape Sequence (z.B. \n linebreak) einleitet, \w aber wie gesagt ja keine ist.

Schau dazu auch mal hier:
http://java.sun.com/docs/books/tutorial/essential/regex/pre_char_classes.html

*gruessle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

ich habe im Prinzip das gleiche Problem.

Ich möchte jedoch erstmal diese Zeichen entfernen [ ( )" ] (also runde Klammer auf und zu und die "Gänsefüßchen".

Ich habe das jedoch diverse male ausprobiert und es funktioniert nicht.
z.B. mit:
Code:
wort.replaceAll("^a-zA-Z0-9"]", "");

das klappt aber nicht ...
 
Zuletzt bearbeitet:
Zurück