2009-10-28 46 views
0

我需要一個正則表達式我想看看一個字符串是否只有一個double,但它可以是任意長度,任何建議?如何確保一個字符串只有任意長度的兩倍?

+0

的NumberUtils是您的終極目標,以確定是否爲'Double.parseDouble通話(...)'會拋出一個異常? – 2009-10-28 15:50:16

+0

我會想,只要嘗試做什麼亞當說,並處理任何異常的捕獲.. – 2009-10-28 15:52:36

+0

「任何長度」部分似乎表明他想解析任意長的「nnnnn.nnnE +/- nnnn」,而不是http ://en.wikipedia.org/wiki/IEEE_754-2008。 – alphazero 2009-10-28 15:55:35

回答

5

您可以嘗試將字符串轉換爲double並在發生異常時捕獲異常?

try{ 
    Double aDouble = Double.parseDouble(aString); 
}catch (NumberFormatException nfe){ 
// handle it not being a Double here 
} 
+0

謝謝比爾......只是在研究如何格式化。 – 2009-10-28 15:56:30

+1

通常我認爲這是一種反模式(嘗試一些東西,然後捕捉異常,如果它不工作)。但我不知道爲什麼 - 這是完全有效的 - 我只是儘量避免在可能的情況下進行。不幸的是,我認爲這裏沒有更好的測試。 – Tenner 2009-10-28 16:00:10

+0

@Tenner你應該認爲它是一種反模式,因爲它意味着捕捉程序流的異常。但我責備API開發人員不包括Double.tryParseDouble()方法 – 2009-10-28 16:03:42

0

嘗試^(\d+|\d+\.|\d*\.\d+)[dD]?$

3

雙將匹配以下正則表達式:

^[-+]?\d*\.?\d+([eE][-+]?\d+)?$ 

注意,對於Java的String你需要躲避反斜槓,那\d[0-9]的簡寫。

0

如果我正確地把你的意思,這正則表達式可能會奏效

"/^[+-]?\d+\.\d+$/" 

在英語 - > A +或 - 號(也許)後面跟着一個或多個數字後跟一個。 (小數點)後跟一個或多個數字。此正則表達式假定數字未用逗號格式化,還假定小數點分隔符是在所有語言環境中都不爲真的點。

0

我從perldoc faq4偷了這個表達式 - 「是一個十進制數」。

import java.util.regex.Pattern; 

    public class Test { 

     public static void main(String[] args) { 
      Pattern pattern = 
       Pattern.compile("^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)$"); 

      System.out.println(((Boolean) pattern.matcher("1").find()).toString()); 
      System.out.println(((Boolean) pattern.matcher("1.1").find()).toString()); 
      System.out.println(((Boolean) pattern.matcher("abc").find()).toString()); 


     } 

    } 

打印:

true 
true 
false 
相關問題