2015-04-07 4 views
-4
StringBuilder s = new StringBuilder(": 2573.01,,"); 
double d; 

Над строкой необходимо преобразовать в двойное. Проблема связана со специальными символами. Как удалить их?как преобразовать строку со специальными символами в int в Java

Ожидаемый результат: d = 2573.01;

+1

Ну, какое значение вы * * ожидать, что должны быть преобразованы в? В нем есть десятичная точка ... Вам нужно предоставить больше контекста о том, чего вы пытаетесь достичь, задавая вопрос. –

+0

, поскольку вы не сказали нам, какую ценность вы ожидаете от попыток s.replace («anythinghere», «»); – 12dollar

+0

- все строки, которые вы хотите преобразовать в этом формате ': [пробел] [цифры]. [Цифры] ,,'? – MCHAppy

ответ

3
String st = s.toString(); 
st = st.replaceAll(":", "").replaceAll(",", "").replaceAll(" ", ""); 
double d = Double.valueOf(st); //Decimal 
int i = (int)d; //No Decimal 
+0

хорошая работа, +1, но она не отвечает на вопрос ОП. Они хотят вернуть double not int. – MCHAppy

+0

Если вы читаете, в нем четко указывается, что дает десятичное значение, а что нет, и на это был дан ответ, прежде чем он сказал double, когда он попросил ввести int. – marko5049

0

Вы можете попробовать извлечь номер с помощью регулярного выражения.

String st = s.toString(); 
st.replaceAll("[^\\d\\.]",""); 
double n = Double.valueOf(st); 
+0

К сожалению, к сожалению, это не будет обрабатывать множество случаев кромки. Что, если это отрицательное число? –

+0

Да, в регулярное выражение необходимо будет внести поправки для любых дополнительных требований, но сам вопрос запрашивает только эту конкретную строку. – Dragondraikk

1

Хороший один лайнер для вас:

public double getDoubleFromNoisyString(String s) { 
    return Double.valueOf(
       s.replaceAll(
        "^.*?(-?\\d+(\\.\\d+)?).*$", 
        "$1")); 
} 

В основном, это выглядит для первого значения в строке, которая, как представляется, в виде целого или десятичного числа (в том числе ведущий отрицательный знак) и игнорирует все остальные символы.

0
String str = ":- 2573.01,,"; 
str = str.replaceAll("[^\\d-.]", ""); 
double value = Double.parseDouble(str); 
System.out.println(value); 

Выход:

-2573.01 
+0

@ user3520698 Я также проверил отрицательные числа. – MCHAppy