Entfernen von allen Nicht-Buchstaben chars aus einem String ohne Regex..?

sirbender

Top Contributor
Hi,

ich will alle Nicht-Buchstaben also Kommas, Punkte, Klammern usw. aus einem String ohne Regex entfernen, da es dies bei GWT nicht gibt?

Die String-Methoden replaceAll selbst koennte ich benutzen - obwohl die sich vielleicht unter GWT anderst verhaelt?

Ich will uebrigens ALLE Buchstaben drin lassen. Auch die von auslaendischen Sprachen. Also Buchstaben mit Accent usw. Viele dieser Buchstaben kenne ich gar nicht. Ist im Unicode-Standard einiges als Buchstaben deklariert?

Danke,
sb
 
ASCII bzw. UNICODE Tabelle nehmen, schauen wo sich die Zeichen/Buchstaben in der Tabelle befinden und welchen wert diese haben,
dann dein Array durchlaufen und alle Zeichen, die nicht im Wertebereich liegen -> raus aus dem Array.

>> Viele dieser Buchstaben kenne ich gar nicht
Also ich würds so machen wie oben beschieben und das Ganze noch konfigurierbar machen.
 
Zuletzt bearbeitet:
Mit
Code:
Character.isLetter
dürfte es gehen

Andere möglichkeit:
Du erzeugst einen weiteren String mit den Zeichen die erlaubt sind.
Dann vergleichst du die beiden Strings mit
Java:
DeinString.contains(...)
// statt ... dann halt der andere String

müsste doch auch gehen oder ?
 
Seit GWT 2.1 gibt es die RegExp-Klasse, die auch auf der Client-Seite genutzt werden kann.

Auf der Seite is die GWT Version 2.1.1, aber da steht:
Java-specific constructs in the regular expression syntax (e.g. [a-z&&[^bc]], (?<=foo), \A, \Q) work only in the pure Java implementation, not the GWT implementation, and are not rejected by either

müsste man dann mit Javscript machen, oder ?
 
Ich habe bisher immer das "übliche" Regex-Schema benutzt, kann mir also unter "java-spezifischem regex" nichts vorstellen. Auch habe ich unter JavaScript nicht mit Regex gearbeitet. Das klingt aber so, als ob das allgemeingültige Schema auf beiden Seiten funktionieren würde, während die sprachspezifischen Sachen jeweils nur auf der dazugehörigen Seite möglich sind.
 
Im Prinzip die Auswahl der Grundoperatoren, die von jeder Sprache unterstützt werden sollte. Da wir uns an der Uni die regulären Ausdrücke auch sprachunabhängig angeschaut haben und damit bisher alles auch in Java umsetzbar war, habe ich nicht nach den Java-eigenen Erweiterungen geschaut.
Java-Script RegExp scheint diese Syntax auch zu unterstützen, womit das Problem auch gelöst sein sollte:
SELFHTML: JavaScript / Objektreferenz / RegExp
 
Ich wandle den String jetzt einfach in ein char[] und checke jeden char via Character.isLetter. Danach baue ich mir den gefilterten String wieder in zu einem String via new String(chars) zusammen.

Ich hoffe das ist die effizienteste Methode das zu tun?
 
Aus einem Array kannst du ja schlecht Einträge entfernen.
Das hier sollte ja auch in GWT laufen (?):
Java:
public static String filter(final CharSequence input) {
	final StringBuilder sb = new StringBuilder(input);
	for (int i = sb.length() - 1; i >= 0; i--)
		if (!Character.isLetter(sb.charAt(i)))
			sb.deleteCharAt(i);
	return sb.toString();
}
 

Zurück
Oben