PDA

View Full Version : String auf Sonderzeichen überprüfen



Deficiency
27-10-05, 08:42
HI!
Ich schon wieder!
Hab ne Frage
und zwar hab ich einen String und will diesen Überprüfen:
public String strconv(HttpServletRequest request, HttpServletResponse response,
ServletContext application, String strToConv)throws ServletException, IOException {
StringBuffer outputbuffer = new StringBuffer();

int strlen = 0;
char conv;

for (int i = 0; i <= strToConv.length(); i++) {
if (strToConv.charAt(i) != ???

wie kann ich jetzt strToConv.charAt(i) auf a-z A-Z 0-9
ich hab es schon probiert mit 'a'-'z' && bzw. || 'A'-'Z'
da kam immer und bzw. oder kann bei bool, int nicht verwendet werden

Bei c++ ging das?!?
Aber wie mach ich das in JAVA

Zhx

kuempi von stein
27-10-05, 09:17
HI!
Ich schon wieder!
Hab ne Frage
und zwar hab ich einen String und will diesen Überprüfen:
public String strconv(HttpServletRequest request, HttpServletResponse response,
ServletContext application, String strToConv)throws ServletException, IOException {
StringBuffer outputbuffer = new StringBuffer();

int strlen = 0;
char conv;

for (int i = 0; i <= strToConv.length(); i++) {
if (strToConv.charAt(i) != ???

wie kann ich jetzt strToConv.charAt(i) auf a-z A-Z 0-9
ich hab es schon probiert mit 'a'-'z' && bzw. || 'A'-'Z'
da kam immer und bzw. oder kann bei bool, int nicht verwendet werden

Bei c++ ging das?!?
Aber wie mach ich das in JAVA

Zhx
wie wärs mal mit nem guten javabuch? :D
oder ner guten suchmaschine?

hab mal im netz gesucht und das hier gefunden:

Wie kann ich in einem String oder StringBuffer mehrere Zeichen
suchen und ersetzen?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
Mit

String String#replace(char,char)

kann ich nur einzelne Zeichen suchen und mit

StringBuffer replace(int,int,String)

nur ersetzen aber nicht suchen.

Lösung:

Eine gute Hausaufgabe. Was man hier braucht, ist eine Kombination von

int String#indexOf(String,int),
String String#substring(int,int)

mit einem neu aufzubauenden StringBuffer.

bzw.

int StringBuffer#indexOf(String,int)
StringBuffer#replace(int,int,String)


Die folgende Lösung ist eine unter vielen und ersetzt alle Vorkommen von
"search" in "source" mit "replace":

public static String replaceAll(String source, String search,
String replace) {
if(search.equals(replace)) {
return source; //kann ja sein, dass wir nichts tun müssen
}

StringBuffer result = new StringBuffer();
int len = search.length();
if(len == 0) {
return source; //verhindert Endlosschleife bei search.equals("");
}

int pos = 0; //position
int nPos; //next position
do {
nPos = source.indexOf(search, pos);
if(nPos != -1) { //gefunden
result.append(source.substring(pos, nPos));
result.append(replace);
pos = nPos+len;
} else { //nicht gefunden
result.append(source.substring(pos)); //letzter abschnitt
}
} while(nPos!= -1);

return result.toString();
}

Da sowas praktisch überall gebraucht wird, gibt es unzählige
Bibliothek(chen) im Netz, die so etwas anbieten, z.B.

URL:http://ostermiller.org/utils/StringHelper.java.html (http://ostermiller.org/utils/StringHelper.java.html)


hoffe das hilft dir weiter.

kuempi

Deficiency
28-10-05, 08:40
THX das hat geholfen!!!

BenderD
29-10-05, 20:14
Hallo,

noch einfacher sind org.apache.commons.lang.StringUtils - open Source versteht sich.

mfg

Dieter Bender



wie wärs mal mit nem guten javabuch? :D
oder ner guten suchmaschine?

hab mal im netz gesucht und das hier gefunden:

Wie kann ich in einem String oder StringBuffer mehrere Zeichen
suchen und ersetzen?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
Mit

String String#replace(char,char)

kann ich nur einzelne Zeichen suchen und mit

StringBuffer replace(int,int,String)

nur ersetzen aber nicht suchen.

Lösung:

Eine gute Hausaufgabe. Was man hier braucht, ist eine Kombination von

int String#indexOf(String,int),
String String#substring(int,int)

mit einem neu aufzubauenden StringBuffer.

bzw.

int StringBuffer#indexOf(String,int)
StringBuffer#replace(int,int,String)


Die folgende Lösung ist eine unter vielen und ersetzt alle Vorkommen von
"search" in "source" mit "replace":

public static String replaceAll(String source, String search,
String replace) {
if(search.equals(replace)) {
return source; //kann ja sein, dass wir nichts tun müssen
}

StringBuffer result = new StringBuffer();
int len = search.length();
if(len == 0) {
return source; //verhindert Endlosschleife bei search.equals("");
}

int pos = 0; //position
int nPos; //next position
do {
nPos = source.indexOf(search, pos);
if(nPos != -1) { //gefunden
result.append(source.substring(pos, nPos));
result.append(replace);
pos = nPos+len;
} else { //nicht gefunden
result.append(source.substring(pos)); //letzter abschnitt
}
} while(nPos!= -1);

return result.toString();
}

Da sowas praktisch überall gebraucht wird, gibt es unzählige
Bibliothek(chen) im Netz, die so etwas anbieten, z.B.

URL:http://ostermiller.org/utils/StringHelper.java.html (http://ostermiller.org/utils/StringHelper.java.html)


hoffe das hilft dir weiter.

kuempi