Java 我如何确保一个字符串只有任意长度的两倍?

Java 我如何确保一个字符串只有任意长度的两倍?,java,Java,我需要一个正则表达式,我想看看一个字符串是否只有一个double,但它可以是任意长度的,有什么建议吗?能否尝试将字符串转换为double,并在失败时捕获异常 try{ Double aDouble = Double.parseDouble(aString); }catch (NumberFormatException nfe){ // handle it not being a Double here } 请尝试^(\d+\d+\.\d*.\d+[dD]?$双精度将匹配以下正则表达式: ^

我需要一个正则表达式,我想看看一个字符串是否只有一个double,但它可以是任意长度的,有什么建议吗?

能否尝试将字符串转换为double,并在失败时捕获异常

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

请尝试
^(\d+\d+\.\d*.\d+[dD]?$

双精度将匹配以下正则表达式:

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

请注意,对于Java字符串,您需要转义反斜杠,
\d
[0-9]

的缩写,如果我理解正确,这个正则表达式可能会工作

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

在英语中->一个+或-符号(可能),后跟一个或多个数字,后跟一个。(小数点)后跟一个或多个数字。此正则表达式假定数字的格式不使用逗号,并且还假定十进制分隔符是一个点,这在所有语言环境中都不是真的。

我从faq4中窃取了此表达式--“是十进制数字”

印刷品:

true
true
false

您可能还想看看ApacheCommons中的NumberRutils


您的最终目标是确定对
Double.parseDouble(…)
的调用是否会引发异常吗?我想,试着按照Adam说的做,并处理捕获中的任何异常。.“任意长度”部分似乎表示他想解析任意长的“nnnnn.nnnE+/-nnnnnn”,一般来说,我认为这是一种反模式(尝试一些东西,如果它不起作用,则捕获异常)。但我不知道为什么——这是完全正确的——我只是尽可能避免这样做。不幸的是,我不认为这里有更好的测试。“你应该认为它是一种反模式,因为它意味着为了程序流而捕捉异常。但是我指责API开发人员没有包括Double.tryParseDouble()方法。原因部分是由于性能原因(生成异常的stacktrace所需的时间并不重要),部分是概念性的——异常应该代表异常情况。因此,如果输入必须是双精度输入,则可以,但如果非数字字符串算作有效输入,则不可以。+1,用于跳出框框思考并给出易于理解的答案,而不是依赖于一些不必要的正则表达式。
true
true
false