Ciao a tutti ragazzi, mi serviva un aiuto per questo problema di java; devo riuscire a trovare alcuni campi in un pacchetto Sip che alla fine è rappresentato da una semplice stringa:
codice:
SIP/2.0 401 Unauthorized
From: <sip:test@192.168.1.107>
To: <sip:test@192.168.1.107>;tag=as1a02a93a
Call-ID: 2537450899
CSeq: 1 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="2a78aad2"
Content-Length: 0
in questa stringa (immaginate che ad ogni accapo c'è un \n ovviamente) mi serve trovare il valore di realm e di nonce. Avevo pensato ad uno split della stringa ma non riesco a trovare una regexp adatta...non essendo esperto di java non so se esiste una specie di funzione tipo C che permette di leggere da una stringa come la "sscanf()".
Altrimenti si può impostare una semplice ricerca tramite vari if testando carattere per carattere fino a quando non si trova la sequenza desiderata...più o meno così:
codice:
public String find_nonce ( String tmp ) {
		
		String nn = new String();
		int i=0;
		while ( 1 == 1 ) {
			if ( tmp.charAt(i) == 'n' ) {
				i++;
				if ( tmp.charAt(i) == 'o' ) {
					i++;
					if ( tmp.charAt(i) == 'n' ) {
						i++;
						if ( tmp.charAt(i) == 'c' ) {
							i++;
							if ( tmp.charAt(i) == 'e' ) {
								System.out.println("Trovato");
								i=i+2;
								while ( tmp.charAt(i) != '\r' ) {
									nn = nn + tmp.charAt(i);
									i++;
								}
								return nn;
							}
							i++;
						}
						i++;
					}
					i++;
				}
				i++;
			}
			i++;
		}

	}
però mi sembra una cosa mooolto grezza...molto C-style...e poi quel ciclo while() impostato in quel modo...non mi piace proprio!!
Se qualcuno ha una idea migliore...grazie mille ragazzi...