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



## sirbender (7. Mai 2012)

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


----------



## MQue (7. Mai 2012)

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.


----------



## Landei (7. Mai 2012)

Ist [c]Character.isLetter[/c] verfügbar?


----------



## 127.0.0.1 (7. Mai 2012)

Mit

```
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

```
DeinString.contains(...)
// statt ... dann halt der andere String
```

müsste doch auch gehen oder ?


----------



## darekkay (7. Mai 2012)

sirbender hat gesagt.:


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



Seit GWT 2.1 gibt es die RegExp-Klasse, die auch auf der Client-Seite genutzt werden kann.


----------



## 127.0.0.1 (7. Mai 2012)

darekkay hat gesagt.:


> 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 ?


----------



## darekkay (7. Mai 2012)

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.


----------



## 127.0.0.1 (7. Mai 2012)

darekkay hat gesagt.:


> Ich habe bisher immer das "übliche" Regex-Schema benutzt, kann mir also unter "java-spezifischem regex" nichts vorstellen.



Und ich hab bisher nur mit dem Java RegEx gearbeitet 
Was meinst du mit dem "üblichen" ?


----------



## darekkay (7. Mai 2012)

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


----------



## sirbender (7. Mai 2012)

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?


----------



## xehpuk (7. Mai 2012)

Aus einem Array kannst du ja schlecht Einträge entfernen.
Das hier sollte ja auch in GWT laufen (?):

```
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();
}
```


----------

