2015-10-19 3 views
-3

У меня есть строки, в которых мне нужно удалить завершающие символы. Есть несколько типов, вот несколько примеров:Подстрока Java содержит только цифры и десятичные числа

«82.882ft» «101in» «15.993ft³» «10.221mm»

т.д. Мне нужно, чтобы удалить разделители длины, так что я не останусь со строками:

"82,882" "101" "15.993" "10.221"

Идеи?

+15

У меня есть идея: написать код. – Maroun

+0

Я не вижу чистого способа сделать это с помощью подстрочных функций. – ergonaut

+0

1. Найдите индекс первого символа, который не является частью числа (только вы можете точно знать, какие символы допустимы в числах). 2. Поднять подстроку до этой точки. – DJClayworth

ответ

1

Попробуйте использовать replaceAll на строку, указав все символы, которые не являются десятичной запятой или номер:

myString = myString.replaceAll("[^0-9\\.]",""); 

"^ 0-9 \." означает все символы, которые не являются числом от 0 до 9 или десятичным. Причина, по которой мы ставим две слэши, состоит в том, чтобы избежать периода, так как в явном выражении он имеет другую коннотацию, чем буквенный символ «.».

+0

escaping '.' внутри класса символов на самом деле не нужно –

0

Просто используйте регулярное выражение:

String result = input.replaceAll("[^0-9.]", ""); 
0

Регулярные выражения, вероятно, лучше всего подходят для этого.

Pattern lp = Pattern.compile("([\\d.]+)(.*)"); 

    // Optional cleanup using Apache Commons StringUtils 
    currentInput = StringUtils.upperCase(
      StringUtils.deleteWhitespace(currentInput)); 

    Matcher lpm = lp.matcher(currentInput); 
    if(lpm.matches()) 
    { 
     // Values 
     String value = lpm.group(1); 

     // And the trailing chars for further processing 
     String measure = lpm.group(2); 
    } 
Смежные вопросы