是否有一个有效的/清洁的方式,以确定是否String
包含字符的序列,其可被解释为:))如果一个)整数b双C a或b唐不适用那么这是一个字母数字?确定是一个字符串是整数或双或纯字符串
回答
是。您可以使用方法:
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)) {
// ...
}
这取决于你是否要支持区域设置或不。
所以,你有两个选择:
不要使用语言环境
- 试试看的Integer.parseInt和Double.parseDouble
检查特定于语言环境/语言
- 利用格局检查或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
小号等)。顺便提一下,Java自己的十进制解析器是intense。
您还需要在例如123.456e + 123。 –
修好了,谢谢指出! – Vlad
当然,问题不明确的是他是问一个字符串在词法上是整数还是双精度,还是它实际上可以适用于Java类型的整数或双精度。 –
使用该知道,如果给定的字符串是一个整数或不
注:它将为bigintegers返回true太
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. 确定一个字符串是不是另一个字符串
- 2. LineageID是字符串或整数
- 3. F#:检查一个值是否是一个字符串数组,字符串数组或字符串数组
- 4. 检查一个字符串是否没有字符或数字
- 5. 确定字符串数组或字符串数组Grails
- 6. Laravel&LaravelCollective第一个参数应该是字符串或整数
- 7. 确定字符串是否以另一个字符串结尾
- 8. 字符串的最后一个字符应该是一个字母或数字
- 9. 如何确定一个字符串是否是ksh的数字
- 10. 什么是约会?一个字符串?或双?
- 11. 用字符串或另一个字符
- 12. 从字符串中提取数字(如整数或双精度)
- 13. 确定一个字符串是否只包含数字或逗号
- 14. Python:TypeError:float()参数必须是一个字符串或数字
- 15. TypeError:float()参数需要是一个字符串或数字
- 16. 如何确定字符串中的单词是否是双字?
- 17. 如何确定列表是否只是一个字符串或字符串列表?
- 18. 我如何得到给定的值是整数或字符串
- 19. 转换的字符串(它是一个char *不是字符串型)为整数
- 20. 无法确定一个字符串当前是否是一个整数
- 21. 当是一个字符串不是一个字符串
- 22. 如何确定一个字符串是否包含另一个字符串
- 23. 确定一个字符串是否包含另一个字符串
- 24. 确定一个字符串是否包含一个子字符串
- 25. Orderby字符串,但值是数字(双)
- 26. 不是字母或数字的字符测试字符串
- 27. 确定一个字符串是否包含数组中的子字符串[NODEJS]
- 28. 是两个字符串anagrams或不?
- 29. TypeError:int()参数必须是一个字符串或一个数字,而不是'list'Django
- 30. 键必须是字符串或符号
@Jens:哪个? – Jim
@Jim Integer.valueof(..),Double.valueOf(..) – Jens
@Jens:我知道如何将字符串转换为整数或双精度。我问如何确定一个字符串是否包含一个有效的整数或双精度的序列。 – Jim