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

なぜこれは私に0、ゼロを与えるのですか?これは2ではないですか?

4

6 に答える 6

6

への引数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正規表現パターンを取ります。任意の文字.で分割することを意味します。

分割するパターンとして使用できますが、個人的には代わりにGuavaを使用します。"\\."

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

(Guava をまだ使用していない場合は、そこにたくさんの機能があります。)

于 2012-12-04T13:40:09.033 に答える
0

使用String[] priceStringArray = priceString.split("\\."); エスケープ シーケンスを使用する必要があります。

于 2012-12-04T13:42:38.520 に答える
0

正規表現では特別な意味があるため、エスケープ.する必要があります。\\..

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