Пытается удалить все буквы и символы, которые не являются 0-9 и периодом. Я использую Character.isDigit()
, но он также удаляет десятичные числа, как я могу также сохранить десятичное число?Java String удаляет все нецифровые символы
ответ
Попробуйте этот код:
String str = "a12.334tyz.78x";
str = str.replaceAll("[^\\d.]", "");
str
Теперь будет содержать "12.334.78"
.
Это также может работать: > str = str.replaceAll ("[\\ D.]", ""); –
@ Óscar López: как включить отрицательные числа? Я имею в виду, я должен заменить все, что не является положительным/отрицательным числом с пустым пространством. Как это сделать? –
@PankajSinghal просто включает знак минуса в регулярном выражении: '[^ \\ d .-]' –
Я использовал бы регулярное выражение.
String text = "-jaskdh2367sd.27askjdfh23";
String digits = text.replaceAll("[^0-9.]", "");
System.out.println(digits);
печатает
2367.2723
Вы хотели бы сохранить -
, а для отрицательных чисел.
Вам не следует избегать точки в вашем регулярном выражении. –
@AdamZalcman спасибо. Я исправлял. ;) –
Не могли бы вы пояснить, что означает '^' и '.' в этом утверждении? –
С гуава:
String input = "abx123.5";
String result = CharMatcher.inRange('0', '9').or(CharMatcher.is('.')).retainFrom(input);
см http://code.google.com/p/guava-libraries/wiki/StringsExplained
String phoneNumberstr = "Tel: 00971-557890-999";
String numberRefined = phoneNumberstr.replaceAll("[^\\d-]", "");
результат: 0097-557890-999
, если вы не нужны "-" в строку, которую вы можете сделать, как это :
String phoneNumberstr = "Tel: 00971-55 7890 999";
String numberRefined = phoneNumberstr.replaceAll("[^0-9]", "");
результат: 0097557890999
Спасибо за отличный answe! R –
Простой способ без использования Regex:
Добавление дополнительной проверки символов для точки '.'
будет решить требование:
public static String getOnlyNumerics(String str) {
if (str == null) {
return null;
}
StringBuffer strBuff = new StringBuffer();
char c;
for (int i = 0; i < str.length() ; i++) {
c = str.charAt(i);
if (Character.isDigit(c) || c == '.') {
strBuff.append(c);
}
}
return strBuff.toString();
}
способ заменить его с потоком Java 8 :
public static void main(String[] args) throws IOException
{
String test = "ab19198zxncvl1308j10923.";
StringBuilder result = new StringBuilder();
test.chars().mapToObj(i-> (char)i).filter(c -> Character.isDigit(c) || c == '.').forEach(c -> result.append(c));
System.out.println(result); //returns 19198.130810923.
}
str = str.replaceAll("\\D+","");
Не знаю почему люди отказали вашему решению ... Помогли мне много, спасибо! Голоса up! – Zarial
Спасибо Зариаль, я вижу, что Роберт фактически отредактировал мой ответ от str = str.replaceAll ("\ D +", ""); to str = str.replaceAll ("\\ D +", ""); ... Так что я сделал эту ошибку, когда вставлял ее в окно редактора StackO. Так что спасибо Роберту за исправление. Теперь это работает! – Angoranator777
это заниженная причина, потому что это repost. Точный же ответ уже был выпущен 5 лет назад !! см. Выше: https://stackoverflow.com/a/10372905/704246 –
Десятичный разделитель валюты может отличаться от Locale to another. В качестве разделителя всегда может быть опасно считать .
. т.е.
╔════════════════╦═══════════════════╗
║ Currency ║ Sample ║
╠════════════════╬═══════════════════╣
║ USA ║ $1,222,333.44 USD ║
║ United Kingdom ║ £1.222.333,44 GBP ║
║ European ║ €1.333.333,44 EUR ║
╚════════════════╩═══════════════════╝
Я думаю, что правильный путь:
- Получить десятичный символ с помощью
DecimalFormatSymbols
по умолчанию Locale или указан один. - Кук регулярное выражение шаблон с десятичной характер, чтобы получить только цифры
И вот как я ее решения:
import java.text.DecimalFormatSymbols;
import java.util.Locale;
код:
public static String getDigit(String quote, Locale locale) {
char decimalSeparator;
if (locale == null) {
decimalSeparator = new DecimalFormatSymbols().getDecimalSeparator();
} else {
decimalSeparator = new DecimalFormatSymbols(locale).getDecimalSeparator();
}
String regex = "[^0-9" + decimalSeparator + "]";
String valueOnlyDigit = quote.replaceAll(regex, "");
try {
return valueOnlyDigit;
} catch (ArithmeticException | NumberFormatException e) {
Log.e(TAG, "Error in getMoneyAsDecimal", e);
return null;
}
return null;
}
Надеюсь, это может помочь ».
- 1. Java удаляет нецифровые символы из строки, кроме x
- 2. Как заменить все нецифровые символы в строке?
- 3. Удалить нецифровые символы PERL
- 4. regex удаляет все символы
- 5. preg_replace все нецифровые символы, кроме + в начале строки
- 6. Удаляет ли Newtonsoft.Json все символы?
- 7. C# Как обрезать все нецифровые символы в строке
- 8. Удалить ведущие конечные нецифровые символы из строки в Java
- 9. SQL - Заменить нецифровые символы в строке
- 10. Как Java String удаляет все не numeric работы внутри?
- 11. Почему компилятор java удаляет все символы юникода перед фактической компиляцией?
- 12. Какао: NSString не удаляет все символы
- 13. PHP удаляет все символы до определенной строки
- 14. SQL-скрипт, который удаляет все нечисловые номера
- 15. Специальные символы - String - Binary - Java
- 16. String Conversion - удалить некоторые символы и заменить нецифровые номера кодом ASCII
- 17. Как выбрать нецифровые символы из строки в php
- 18. PHP - Sanitize string удаляет числа
- 19. Заменить все символы на «Java»
- 20. Удалите все числа и «{» из String Array
- 21. метод, который удаляет все дважды дублировать символы строки
- 22. SQL Server удаляет ведущие 0 и все символы после цифр
- 23. Java - сканер не удаляет все нужные объекты
- 24. Как перебрать все символы в массиве String
- 25. Убедитесь, что String содержит все символы?
- 26. Удалить символы и все после String
- 27. Удалить все символы из переменной String, но буквы
- 28. Java: удалить странные специальные символы из String
- 29. Чтение std :: string, удалить все специальные символы из std :: string
- 30. PHP удаляет символы из строки
[myStr = myStr.replaceAll ("\ [^ \\ д \]", "")] [1] [1]: http://stackoverflow.com/questions/1533659/ how-do-i-remove-the-non-numeric-character-from-a-string-in-java – Bitmap
Это странный способ сказать это. Разве не «все буквы и символы, которые не равны 0-9, а период« эквивалентен более простым »всем символам, которые не являются 0-9 и периодом»? Я имею в виду, буквы - это символы, которые не являются 0-9 или периодом. –