2013-11-25 3 views
5

Простой вопрос, но у меня проблемы. У меня есть вход String, который находится в этом формате 12:43. (ММ: СС).
Я пытаюсь преобразовать эту строку в int (секунды). Единственная часть, которую я не знаю, как это сделать, - это как получить 12 и 43 без получения invalid double error. Потому что он содержит то, что ":" в строке, я не могу сделать обычный Parse.parseInt(string);.Строка int, содержащая символы

ответ

9
  • split строка согласно :
  • Для каждого int в результирующем массиве, применять parseInt
+0

Я вижу, что вы говорите, но я не знаю регулярных выражений. Не могли бы вы привести пример? –

+3

В этом конкретном примере нет необходимости в специальном регулярном выражении. Вы можете просто сделать 'String [] arr = myStr.split (": ");' – Maroun

+0

Awesome. Итак, 'String [0]' будет минуты, тогда 'String [1]' будет секунд? –

5

Вы можете сделать

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'; 

или

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

+1: Я lolled на '-'0 '* 671'. Вероятно, это самый быстрый способ анализа, который возможен. –

+0

Не уверен. Будет ли ''0' * 671' оптимизирован в константу? –

+0

@DavidWallace Я бы так подумал – Cruncher

Смежные вопросы