Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Formattazione stringa

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    22

    Formattazione stringa

    Salve a tutti
    Ho un metodo di una classe java che riceve in ingresso un indirizzo IP e devo controllare che il dato passato in ingresso sia conforme al formato indirizzo IP.
    Sapreste dirmi come fare?????

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ci sono diversi modi.
    Innanzitutto immagino tu intenda lavorare con un IPv4.

    Puoi utilizzare una espressione regolare, ma risulterebbe piuttosto arduo controllare il range.
    Puoi suddividere la stringa in 4 sottostringhe e, per ciascuna, tentare una conversione numerica e verificare che ciascuna sia un valore compreso fra 0 e 255.

    Oppure puoi sfruttare il meccanismo delle eccezioni utilizzando la classe InetAddress ed il suo metodo getByName(). Quest'ultimo dovrebbe essere il metodo più rapido, in quanto deleghi alla classe InetAddress l'oneroso compito del parsing:

    codice:
    try {
       InetAddress ia = InetAddress.getByName( tuaStringa );
    } catch (Exception e) {
       // Non rappresenta un IP valido
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    22
    grazie tanto

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    22

    Vincoli stringhe

    Scusate ancora ma sono alle prime armi con JAVA e, non avendo mai avuto a che fare con dei linguaggi di programmazione, sto riscontrando delle difficoltà....
    Come potrei dichiarare che una stringa, la cui lunghezza può essere al massimo di 255 caratteri, può assumere i valori:
    [(a-Z)(0-9)]*?
    Ho provato a vedere in giro ma non sono riuscita a trovare nessun codice che mi permettesse di esprimere questi vincoli....

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Vincoli alle stringhe non puoi darne... al massimo puoi controllare se una determinata stringa è valida rispetto ai tuoi vincoli oppure no.

    Per controllare la lunghezza di una stringa hai a disposizione il metodo length(), che ritorna, appunto, la lunghezza della stringa.

    Per verificare che una stringa soddisfi una determinata espressione regolare, hai il metodo matches().

    Tutto questo lo trovi nella documentazione della classe String.

    codice:
    String miaStringa = ...;
    
    // Verifico che la stringa sia al più di 255 caratteri:
    if (miaStringa.length() <= 255) {
       // Ok... la stringa ha al più 255 caratteri
    
       // Ora verifico che la mia stringa soddisfi l'espressione regolare da te postata
       if ( miaStringa.matches("[(a-Z)(0-9)]*") ) {
          // Ok, soddisfa la RegEx
       } else {
          // No, non soddisfa
       }
    } else {
       // No, ha più di 255 caratteri
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    22
    grazieeeee mille è quello di cui avevo bisogno, infatti devo proprio verificare se i parametri ricevuti in ingresso al metodo rispettano questa sintassi.
    Un consiglio secondo te mi conviene gestire il tutto con delle eccezioni oppure è sufficiente un semplice if else?

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Dipende da cosa stai facendo e da come vuoi gestirlo, suppongo che in questo caso una malformedStringException(fatta da te) possa essere utile, ma se dopo la gestione della stessa torni a chiedere il valore fai un if else (pratico alla fine)

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    22
    Ho creato questa mi eccezione, spero che vada bene....

    public class SyntaxError extends Exception {
    SyntaxError()
    {
    super("300");
    }
    void checkSyntax(org.example.www.if1.GetIdRequestMsg GetIdRequestMsg1)throws SyntaxError{
    String checkIP=GetIdRequestMsg1.getIp_address_EM();
    String checkNameEm=GetIdRequestMsg1.getName_EM();
    String checkName=GetIdRequestMsg1.getName();
    if(checkIP.matches("[(0-255].[(0-255].[(0-255].[(0-255]")&&checkNameEm.matches("[(a-Z)(0-9)]*")&&checkName.matches("[(a-Z)(0-9)]*")&&checkNameEm.length() <= 255&&checkName.length() <= 255){
    //TODO: deve essere svolto un metodo appartenente alla classe EMException
    }
    else{
    throw new SyntaxError();
    }

    }
    }

    Ora come posso dire che se le condizioni dell'if sono soddisfatte deve essere dato avvio al metodo checkEM che viene definito all'interno della classe: public class EMException extends Exception????

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.