Java:字符串拆分行为很奇怪

时间:2012-12-04 13:38:33

标签: java string split

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

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

6 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

你需要像那样<{1}}逃脱

.

String[] priceStringArray = priceString.split("\\."); 将正则表达式作为参数,split表示任何字符。

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

答案 2 :(得分:0)

使用.之类的反斜杠转义\\.。对于任何事情,.都是正则表达式元字符。您必须使用\\.将其转义才能将其视为普通字符

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

答案 3 :(得分:0)

String.split采用正则表达式模式。您传递的是.,这意味着您想要拆分任何角色

可以使用"\\."作为要分割的模式 - 但我个人会改为使用Guava

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

(如果您还没有使用Guava,那么你会在那里找到加载的好东西。)

答案 4 :(得分:0)

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

String priceString = "45.0";
String[] priceStringArray = priceString.split("\\.");
return priceStringArray.length + "";

答案 5 :(得分:0)

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