Есть ли эффективный/чистый способ определить, содержит ли String
последовательность символов, которая может быть интерпретирована как: a) Целое число b) Двойное c) Если a или b don 't применить, то это буквенно-цифровой?Определить строку целую или двойную или обычную строку
ответ
Да. Вы можете использовать методы:
String text = "1000";
try {
Integer.valueOf(text);
} catch (NumberFormatException ex) {
System.out.println("not integer");
}
try {
Double.valueOf(text);
} catch (NumberFormatException ex) {
System.out.println("not double");
}
if ((variable == Math.floor(variable)) && !Double.isInfinite(variable)) {
// ...
}
Это зависит от того, хотите ли вы, чтобы поддержать национальную версию или нет.
Так у вас есть 2 варианта:
Не используйте Locale
- Просто попробуйте Integer.parseInt и Double.parseDouble
Проверка на конкретной Locale/Язык
- Используйте шаблон для проверки или NumberFormat
Предполагая, что ваши номера записываются в виде языка обычного программирования (например, десятичные разделители точки и т.д.), вы можете попробовать использовать регулярные выражения:
import java.util.regex.Pattern;
class Test {
private static String typeOfThing(String text) {
if (Pattern.matches("[+-]?[0-9]+", text)) {
return "integer";
} else if (Pattern.matches("[+-]?(([0-9]+\\.[0-9]+)|([0-9]+(\\.[0-9]+)?e[+-]?[0-9]+))", text)) {
return "double";
} else return "other";
}
public static void main(String[] args) {
System.out.println(typeOfThing("+123")); // integer
System.out.println(typeOfThing("123")); // integer
System.out.println(typeOfThing("-123")); // integer
System.out.println(typeOfThing("123.456")); // double
System.out.println(typeOfThing("-1.123e-10")); // double
System.out.println(typeOfThing("123hello")); // other
}
}
выше, является лишь доказательством концепции, она касается научной нотации, но могут отсутствовать некоторые крайние случаи (например, NaN
s и т.д.). Кстати, собственный десятичный парсер для Java довольно intense.
Вам также необходимо разрешить + в. 123.456e + 123. –
Исправлено, спасибо за указание! – Vlad
Конечно, неясно, спрашивает ли он, является ли строка лексически целочисленным или двойным, или может ли он фактически _fit_ в любом из типов Java Integer или Double. –
Используйте это, чтобы знать, если данная строка является целым числом или не
Примечание: она возвращает истину для bigintegers слишком
entered_string.matches("\\d+")
Чтобы узнать, если введенная строка с плавающей точкой попробовать этот
Pattern p = Pattern.compile("^[-+]?[0-9]*\\.?[0-9]+$");
Matcher m = p.matcher(entered_string);
Если вы хотите знать, является ли данная строка просто строкой, попробуйте это
Pattern p = Pattern.compile("^[a-zA-Z]*$");
Matcher m = p.matches(entered_string);//as you requested for plain text
- 1. stringByReplacingOccurrencesOfString удаляет целую строку
- 2. MySQL: сравнить целую строку
- 3. Удалить обычную строку из строки, используя jquery или plain Javascript
- 4. получить двойную строку C++
- 5. Преобразовать строку в двойную
- 6. Перетащите целую строку таблицы
- 7. StringTokenizer, получающий целую строку
- 8. Сделать целую строку clickable
- 9. Пробелы, занимающие целую строку
- 10. PDO- Удалить целую строку
- 11. preg_replace заменить целую строку
- 12. Как изменить информацию о культуре на строку или двойную
- 13. Удалить целую строку, если значение больше или меньше?
- 14. Как сочетать целую строку URL в React Native или Javascript?
- 15. Как читать токены, не читая целую строку или файл
- 16. Как определить новую строку (или пустую строку) в файле?
- 17. Как определить строку на английском или арабском?
- 18. Как определить файл или регулярную строку? AS3
- 19. определить строку содержит html или нет yii2
- 20. Возможно определить параметр как строку ИЛИ массив?
- 21. определить код ошибки, число или строку?
- 22. Определить строку имя файла или имя каталога
- 23. Удалить целую строку NOT, содержащую заданную строку
- 24. Возвращая целую строку с preg_split
- 25. Как извлечь строку или строку?
- 26. конвертировать строку в двойную теперь?
- 27. Выделите целую строку при наведении
- 28. Маленькая проблема вытекания целую строку
- 29. Удалить целую строку строки angularjs
- 30. textView.toString() вернуть обычную строку android
@Jens: Что такое? – Jim
@Jim Integer.valueof (..), Double.valueOf (..) – Jens
@Jens: Я знаю, как преобразовать строку в Integer или Double. Я спрашиваю, как определить, содержит ли строка последовательность, которая является допустимым целым или двойным. – Jim