mOSSpOWER Geschrieben 13. März 2006 Teilen Geschrieben 13. März 2006 Moin, heute wieder mal ein kleines Problem, wer kann mir helfen. 1. Ich weiß, dass ich es auch selbst machen könnte, aber vielleicht muß ich das ja gar nicht, deshalb meine Frage. Ich möchte, dass ein Benutzer wo auch immer definieren kann, was er von einem String entfernen möchte, z.B. der Ausgangsstring "H.H....[]..." usw. - gibt jetzt der Benutzer "." all = "true" und "[]" all = "true" an, so werden alle Zeichen entfernt mit dem Endergebnis "HH". ... leider sind auch hier Werte dabei ".[]", die Steuerzeichen in Expressionvalues sind, d.h. ich muss jedes einzelne maskieren, wenn ich java.lang.String.replace(All) verwenden möchte - so nun meine Frage, gibt es schon in Java eine vorgefertigte Methode, die genau alle diese Steuerzeichen maskiert? Gruß P.S. Ohne maskieren klappt es nicht (immer), so wird z.B. aus H.....o einfach ein kompletter Leerstring oder auch können Fehlermeldungen kommen "[]" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mOSSpOWER Geschrieben 15. März 2006 Autor Teilen Geschrieben 15. März 2006 Moin, für alle, die mal das gleiche Problem haben und keine Standardlösung finden können: public static String replace(String replaceWith, String replaceFrom, String content, boolean replaceAll, boolean ignoreCase) { String replace = content; if(!ValueUtil.isEmpty(replaceWith) && ValueUtil.isNotEmptyOrDefault(content)) { int startIndex = ignoreCase ? StringUtil.getIndexOfIgnoreCase(replace, replaceFrom, 0) : replace.indexOf(replaceFrom); int endIndex = ValueUtil.INT_TYPE_EMPTY; String prefix = ValueUtil.STRING_EMPTY; String postfix = ValueUtil.STRING_EMPTY; while(startIndex != -1) { prefix = replace.substring(0, startIndex); postfix = replace.substring(startIndex + replaceFrom.length()); replace = prefix + replaceWith + postfix; if(!replaceAll) { break; } endIndex = (prefix + replaceWith).length(); startIndex = ignoreCase ? StringUtil.getIndexOfIgnoreCase(replace, replaceFrom, endIndex) : replace.indexOf(replaceFrom, endIndex); } } return replace; } und hier noch meine ältere Hilfsmethode, die innerhalb von replace benutzt wird: public static int getIndexOfIgnoreCase(String fromString, String searchString, int indexStart) { int index = ValueUtil.INT_TYPE_EMPTY; if(ValueUtil.isNotEmptyOrDefault(fromString) && ValueUtil.isNotEmptyOrDefault(searchString)) { index = fromString.toUpperCase().indexOf(searchString.toUpperCase(), indexStart); } return index; } Die ValueUtil-Variablen sind einfach Defaultwerte (MIN, null, Leerstring usw.) Grüße und frohes schaffen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.