是否有一個有效的/清潔的方式,以確定是否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