2013-10-21 110 views
0

我有一个问题 - 有没有可能在文本中识别负数,在右边有负号? 例如我正在考虑这样的数字:1500.0-(而不是-1500.0)。 非常感谢您的帮助。解析包含数字的字符串,右边带减号

+2

是的,有很多的可能性要做到这一点,你有什么已经尝试过? –

+1

是的。有可能的。您还有其它问题么? – Pshemo

+1

我同意。这绝对有可能。至少在20世纪60年代有很多存在的证据。 –

回答

0

你可以使用charAtregular Expression,还有更多...

String s = "1500.00-"; 
if (s.charAt(s.length()-2) == '-'){ 
    //minus on the right. 
} 
1

它不仅是可能的,它实际上是更容易处理尾随符号。您只需像往常一样转换数字,继续获取数字,如果数字以负号结尾,则只需将其取消即可。比必须记住领先标志更容易。

尽管在JDK中提供的方法的名称,这不是'解析',它是基数转换。

0

首先移动负(如果有的话),从年底开始:

num = num.replaceAll("(.*)(-)?$", "$2$1"); 

这里的好处是,如果有在年底,或YJR没有减号减去我们alteady在一开始,没有任何改变它。

然后分析它为正常,如:

double d = Double.parseDouble(num); 
+0

作为次要优化,检查是否会更快if(num.charAt(num.length() - 1)==' - ')'比运行正则表达式? – Josh

+0

有更多的代码和过早的优化:它可能会在执行时间内微掉@spacepope微秒。如果这是在一个紧密的循环中执行数百万次,你可能会考虑更快的方法,但对于日常代码,简洁和方便大于(小)性能。 – Bohemian

相关问题