2016-03-09 57 views
-2

是否有一個有效的/清潔的方式,以確定是否String包含字符的序列,其可被解釋爲:))如果一個)整數b雙C a或b唐不適用那麼這是一個字母數字?確定是一個字符串是整數或雙或純字符串

+0

@Jens:哪個? – Jim

+0

@Jim Integer.valueof(..),Double.valueOf(..) – Jens

+0

@Jens:我知道如何將字符串轉換爲整數或雙精度。我問如何確定一個字符串是否包含一個有效的整數或雙精度的序列。 – Jim

回答

4

是。您可以使用方法:

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"); 
} 
0
if ((variable == Math.floor(variable)) && !Double.isInfinite(variable)) { 
    // ... 
} 
2

這取決於你是否要支持區域設置或不。

所以,你有兩個選擇:

  1. 不要使用語言環境

    • 試試看的Integer.parseInt和Double.parseDouble
  2. 檢查特定於語言環境/語言

    • 利用格局檢查或NumberFormat的
1

假設你的號碼都寫在平時的編程語言的形式(例如小數點分隔符是點等),你可以嘗試使用正則表達式:

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

+0

您還需要在例如123.456e + 123。 –

+0

修好了,謝謝指出! – Vlad

+1

當然,問題不明確的是他是問一個字符串在詞法上是整數還是雙精度,還是它實際上可以適用於Java類型的整數或雙精度。 –

0

使用該知道,如果給定的字符串是一個整數或不

注:它將爲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 
相關問題