If-Schleife funktioniert nicht

  • Antworten:9
Imagine Box
  • Forum-Beiträge: 346

09.06.2014, 16:50:08 via Website

Hallo,

ich habe einen Text, welchen ich ganz kreativ einfach "Text" nenne. Diesen möchte ich auf Sonderzeichen, Nummern sowie eine bestimmte Textlänge hin überprüfen. Anschließend soll angezeigt werden, welches Kriterium zutrifft und welches nicht. Leider funktioniert das nicht; ich erhalte immer als Antwort "false"...

Hier der Code:

boolean special_characters = false;
boolean number_decimal = false;
boolean good_length = false;

[...]

EditText Text =(EditText)findViewById(R.id.ET_Text);
    String text= Text.toString();
    if (text.matches(".? ],_*!")){
        special_characters = true;
    }
    if (text.matches("0123456789")){
        number_decimal = true;
    }
    if (text.length()<12){
        good_length = true;
    }

[...]

if (good_length == true){
        TextView length =(TextView)findViewById(R.id.TV_lengthtrue);
        length.setText(getResources().getString(R.string.yes));
    }
    else {
        TextView length =(TextView)findViewById(R.id.TV_lengthtrue);
        length.setText(getResources().getString(R.string.no));
    }

    if (number_decimal == true){
        TextView numbers =(TextView)findViewById(R.id.TV_numberstrue);
        numbers.setText(getResources().getString(R.string.yes));
    }
    else {
        TextView numbers =(TextView)findViewById(R.id.TV_numberstrue);
        numbers.setText(getResources().getString(R.string.no));
    }

    if (special_characters == true){
        TextView characters =(TextView)findViewById(R.id.TV_specialcharacterstrue);
        characters.setText(getResources().getString(R.string.yes));
    }
    else {
        TextView characters =(TextView)findViewById(R.id.TV_specialcharacterstrue);
        characters.setText(getResources().getString(R.string.no));
    }

Ich wäre für jede Hilfe dankbar! Ich denke, dass der Fehler ganz einfach ist, ich aber mittlerweile einfach den Überblick verloren habe...

Leider werden einige Zeichen vom Blogsystem zu Smileys etc. konvertiert...

— geändert am 09.06.2014, 16:52:10

Antworten
Imagine Box
  • Forum-Beiträge: 346

09.06.2014, 17:23:17 via Website

Danke für deinen Vorschlag! Eigentlich würde ich aber ganz gerne bei der If-Abfrage bleiben, weil ich sonst vermutlich die halbe App umschreiben müsste :/

Ich habe das ganze mal vereinfacht:

boolean Is_specialcharacters;
boolean Is_number;
boolean Is_length;

[...]

EditText Text=(EditText)findViewById(R.id.ET_Text);
        String text= Text.toString();
        if (text.matches(".? ],_*!")){
            boolean Is_specialcharacters = true;
        }
        if (text.matches("0123456789")){
            boolean Is_number = true;
        }
        if (text.length()<12){
            boolean Is_length = true;

            }

    [...]




if (Is_specialcharacters == true){
            TextView characters =(TextView)findViewById(R.id.TV_specialcharacterstrue);
            characters.setText(getResources().getString(R.string.yes));
        }
        if (Is_number == true){
            TextView numbers =(TextView)findViewById(R.id.TV_numberstrue);
            numbers.setText(getResources().getString(R.string.yes));
        }
        if (Is_length == true){
            TextView length =(TextView)findViewById(R.id.TV_lengthtrue);
            length.setText(getResources().getString(R.string.yes));
        }

Funktioniert leider trotzdem nicht :(

— geändert am 09.06.2014, 17:25:10

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

09.06.2014, 18:02:31 via Website

Du kannst doch auch eine If bei regex machen.
Das Pattern im Patch sollte schon richtig formatiert erden.
Regular Expressions halt. Genau das überprüfst du doch mit matches.
Ob ein String über ein bestimmtes eingabemuster (pattern) passt

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
DroidGeek
  • Forum-Beiträge: 17

09.06.2014, 19:59:56 via Website

Ich bin ja auch nicht so der Programmier-Experte.

Aber hier kann der Fehler evtl. sein:

EditText Text =(EditText)findViewById(R.id.ET_Text);
String text= Text.toString();

Müsste doch eigentlich so aussehen:

EditText Text =(EditText)findViewById(R.id.ET_Text);
String text= Text.getText().toString();

Ich hoffe das hilft weiter :D

Antworten
Martin
  • Forum-Beiträge: 756

09.06.2014, 20:14:47 via App

In einer halben Stunde kann ich dir ein Beispiel zeigen, wie ich das mal gelöst hab

Antworten
Martin
  • Forum-Beiträge: 756

09.06.2014, 20:40:06 via Website

private void istTextstring(){
    try
    {
        Integer.parseInt(deinstringzumtesten);
    }
    catch(NumberFormatException ex)
    {
        //Aktion wenn es kein Int ist
    }
}

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

09.06.2014, 20:47:57 via Website

und bei den Sonderzeichen

if(deinString.contains("?") | deinString.contains("*") |deinString.contains("!"))

{
//do your stuff
}

Mit einem Regex pattern wäre das längst nicht so aufwendig

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Martin
  • Forum-Beiträge: 756

09.06.2014, 21:35:07 via App

Meine Lösung funktioniert auch bei Sonderzeichen...

Antworten
Imagine Box
  • Forum-Beiträge: 346

09.06.2014, 21:36:54 via Website

Danke Leute, es hat jetzt geklappt. Ich habe es im Endeffekt mit .contains gelöst.

Später aber werde ich auf Regex umsteigen :)

Antworten