2013-11-25 9 views
5

Domanda semplice ma ho problemi. Ho un input di stringa che è in questo formato 12:43. (MM: SS).
Sto cercando di convertire questa stringa in int (secondi). L'unica parte che non so come fare è come ottenere 12 e 43 senza ottenere invalid double error. Poiché contiene lo ":" nella stringa, non riesco a eseguire il solito Parse.parseInt(string);.Stringa a int mentre contiene caratteri

risposta

9
  • split la stringa secondo :
  • Per ogni int nella matrice risultante, applicato parseInt
+0

Vedo ciò che dici, ma non conosco affatto le espressioni regolari. Potresti fornire un esempio? –

+3

In questo esempio specifico, non è necessario regex speciali. Puoi semplicemente fare 'String [] arr = myStr.split (": ");' – Maroun

+0

Impressionante. Quindi 'String [0]' sarebbe minuti, quindi 'String [1]' sarebbe secondi? –

5

Si può fare

String s = "12:43"; 
int secs = (s.charAt(0)-'0')*600 + (s.charAt(1) - '0') * 60 
      + (s.charAt(3)-'0')*10 + s.charAt(4)-'0'; 

o

int secs = s.charAt(0)*600+s.charAt(1)*60+s.charAt(3)*10+s.charAt(4)-'0'*671; 
+1

+1: Mi sono fermato su '-'0 '* 671'. Questo è probabilmente il modo più veloce di analisi che è possibile. –

+0

Non sicuro. '' 0 '* 671' viene ottimizzato in una costante? –

+0

@DavidWallace Lo direi sicuramente così – Cruncher

Problemi correlati