2012-05-04 6 views
-4

Я хочу извлечь строку «265.12» или «0.00» из буквенно-цифровой строки, которая может иметь либо значение «265.12+», либо «265.12-» и «0.0+» или «0.0-» в java ,extract number from alphanumeric string

Можно ли заменить в один прием вместо двух методов замены для знака + и -?

+3

Вы даже не мотивировали использование метода замены. Вы можете использовать метод подстроки внутри условия, которое проверяет последний символ. Условие может быть сделано как оператор switch. –

+2

Ввод и вывод не ясны, можете ли вы дать полный пример того, какая строка будет выглядеть и что вы хотите извлечь? – amit

+0

Вы хотите сохранить номер или все, кроме номера? –

ответ

0

Думаю, .replaceAll("\\$ ?(.+) ?[+-]", "$1") должен сделать трюк.

PS: исправлено @MarkoTopolnik :)

PS: recorrected по @userUnknown -»

PS: переиздал сам = D

+0

Почему бы не "[+ \\ -]"? Путь проще. –

+0

Вы правы, я думал, что нам нужно скрыться от '+'. – sp00m

+2

Вам не нужно замаскировать минус в группе, если это последний или первый символ этой группы. '[+ -]' или '[- +]' в порядке. –

0

Эффективная реализация для конкретного случая использования:

String extractNum(String in) { 
    final char last = in.charAt(in.length()-1); 
    return (last == '+' || last == '-') ? in.substring(0, in.length()-1) : in; 
} 
+0

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