Wartość pattern nie zawiera się w stringu

0

Mam napisaną funkcję która czyta wartość QR Codu. Podany QR cod zawiera pewne wrażenie . Poprawnie to działa.


Pattern p = Pattern.compile("<z[0-9]>(.+?)</z[0-9]>");
                            Matcher m = p.matcher(barcodeString);

                            while (m.find()) {
                                daneKarty[index] = m.group(1);
                                index++;
    }

W przypadku jak podana wartość QR kodu nie zawiera <z[0]> to aplikacja się zatrzymuje. Próbuje swoich sił ale mi nie wychodzi.

Pattern p = Pattern.compile("<z[0-9]>(.+?)</z[0-9]>");
Matcher m = p.matcher(barcodeString);
try{
// w wartości OR kodu nie zawiera się podane wyrażenie pattern 

    if (!barcodeString.contains(p))
//pokazuje się bład 
contains in  String cannot be applied 


}

catch (){
    
    while (m.find()) {
        daneKarty[index] = m.group(1);
        index++;
    }
}
 

0

Nie rozumiem. Przecież to: barcodeString.contains(p) w ogóle nie ma sensu. Widzisz przecież wyżej w kodzie że nie tak sie uzywa Patternu i Matchera. Żeby sprawdzić czy podane wyrażenie regularne pasuje do wzorca wystarczy ci sprawdzić co zwraca m.find(). Jeśli zwróci "false" to znaczy ze wyrażenie nie pasuje.

0

próbowałam napisać


boolen  check = m.find();
 try {
                            check = false;

                        } catch (Exception e) {


                            AlertDialog.Builder alert = new AlertDialog.Builder(ScanQrCodeActivity.this);
                            alert.setTitle(R.string.Error);
                            alert.setMessage("Podana karta jest błędna. Zeskanuj ją jeszcze raz.");
                            alert.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    Intent intent = new Intent(ScanQrCodeActivity.this, SmsCodeActivity.class);
                                    startActivity(intent);
                                }
                            });
                            alert.setNegativeButton("Anuluj", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {

                                }
                            });

                            alert.show();

                        }

ale w wynku skanowania pojawia się napis " Niestety aplikaca została zatrzynana "

1

Nie no ale czy ty w ogóle rozumiesz co robisz? o_O Bo ten kod powyżej to jakis ciężki WTF jest i klasyczny przykład na nie rozumiem co się dzieje, ale sklejam losowe skrawki kodu z internetów i mi nie działa. Ten kod powyzej w ogóle sie nie wykona nigdy bo check = false; raczej nie rzuci zadnego wyjątku.

A kod w poscie wcześniej nie ma sensu bo zamiast używać istniejących funkcji to próbujesz pisać coś "na pałe".

0

wiem co robie
napisałam ziemną boolen check = m.find();

jezeli check = false

Ma pojawić się alter dialog który pokazuje informacje

0
magdalena123 napisał(a):

wiem co robie
napisałam ziemną boolen check = m.find();

jezeli check = false

Ma pojawić się alter dialog który pokazuje informacje

Ziomuś, sama napisałaś "jeżeli" a później do sprawdzania warunku użyłaś try.. catch. WTF? Instrukcja warunkowa w Javie ma składnię if (warunek) {//tu umieszczasz kod}

0
magdalena123 napisał(a):

wiem co robie

A dalej

try {
    check = false;
} catch (Exception e) {
// jakis kod

Nie, nie wiesz co robisz. Not even close.

1 użytkowników online, w tym zalogowanych: 0, gości: 1