Zum Inhalt springen

RegExpr. Values maskieren


Empfohlene Beiträge

Geschrieben

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 "[]"

Geschrieben

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 :D

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...