2
public String getPriceString() {
    String priceString = "45.0";
    String[] priceStringArray = priceString.split(".");
    return priceStringArray.length + "";
}

为什么这给我一个0,零?这不应该是2吗?

4

6 回答 6

6

to 的参数split()是一个正则表达式,点在正则表达式中有特殊的含义(它匹配任何字符)。

尝试priceString.split("[.]");

于 2012-12-04T13:40:18.483 回答
2

你需要这样.逃跑

String[] priceStringArray = priceString.split("\\.");

split将正则表达式作为参数,.表示任何字符。

http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#sum

于 2012-12-04T13:40:06.690 回答
0

.用反斜杠转义,如\\.. .是任何东西的正则表达式元字符。您必须将其转义\\.才能使其视为正常角色

        String priceString = "45.0";
        String[] priceStringArray = priceString.split("\\.");
于 2012-12-04T13:40:02.183 回答
0

String.split采用正则表达式模式。您正在传递,.这意味着您要拆分任何字符

可以"\\."其用作拆分模式-但就我个人而言,我会改用番石榴

private static final Splitter DOT_SPLITTER = Splitter.on('.');
...

(如果你还没有使用 Guava,你会在那里找到很多好东西。)

于 2012-12-04T13:40:09.033 回答
0

您需要转义.\\.因为.在正则表达式中具有特殊含义。

String priceString = "45.0";
String[] priceStringArray = priceString.split("\\.");
return priceStringArray.length + "";
于 2012-12-04T13:41:01.823 回答
0

使用String[] priceStringArray = priceString.split("\\."); 您将不得不使用转义序列。

于 2012-12-04T13:42:38.520 回答