2013-07-25 6 views
1

Я хочу, чтобы получить номера данной строки, и я использовал код, как показано нижеОтдельный номер из строки

String sample = "7011WD"; 
    String output = ""; 
    for (int index = 0; index < sample.length(); index++) 
    { 
     if (Character.isDigit(sample.charAt(index))) 
     { 
      char aChar = sample.charAt(index); 
      output = output + aChar; 
     } 
    } 

    System.out.println("output :" + output); 

Результат будет: выход: 7011

Есть ли простой способ получить выход?

+2

Вы можете использовать регулярное выражение – Rakesh

+0

Этот код, кажется, работает. Что за вопрос? – Thilo

+0

Проверить с существующими сообщениями как это http://stackoverflow.com/questions/2367381/extract-numbers-from-a-string-java –

ответ

6

Есть ли простой способ, чтобы получить выход

Может быть, вы могли бы использовать регулярное выражение \\D+ (D ничего, что не является цифрой, + означает одно или более вхождение), а затем String#replaceAll() все без цифр с пустой строкой:

String sample = "7011WD"; 
String output = sample.replaceAll("\\D+",""); 

Хотя помните, используя регулярное выражение не является эффективным на всех. Кроме того, это регулярное выражение также удалит десятичные точки!

Вы должны использовать Integer#parseInt(output) или Long#parseLong(output), чтобы получить примитивную int или long соответственно.


Вы также можете использовать Google's Guava CharMatcher. Укажите диапазон с помощью inRange() и верните символы из этого диапазона в последовательности String, используя retainFrom().

+1

Если вы действительно хотите получить целое число, используйте Integer.parseInt (вывод) – wheresmycookie

+0

@RobertKotcher добавит это! – NINCOMPOOP

+0

Я думал, что '\ D' соответствует несимметричным символам, может прояснить пожалуйста. –

1

Также вы можете использовать ASCII, чтобы сделать это

String sample = "7011WD"; 
String output = ""; 
for (int index = 0; index < sample.length(); index++) 
{ 

     char aChar = sample.charAt(index); 
     if(int(aChar)>=48 && int(aChar)<= 57) 
     output = output + aChar; 
    } 
} 

System.out.println("output :" + output); 
+0

OP попросил более простой способ решить эту проблему, я не уверен, что это следует этим рекомендациям. – Tdorno

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