2

を使用することもできましたが、この場合Decimal Formatは使用する必要があります。regex次の文字列 myString = "0.44587628865979384"; があります。小数点以下 3 桁までトリミングする必要があるため、0.445 のようになります。

私は次のことを試しました:

String myString = "0.44587628865979384";
String newString = myString.replaceFirst("(^0$.)(\\d{3})(\\d+)","$1$2");
// But this does not work. What is the problem in here?
4

3 に答える 3

5

そうではありません(^0$.)。これは(\\d*.)

String newString = myString.replaceAll("(\\d*.)(\\d{3})(\\d+)", "$1$2");
于 2013-04-21T06:44:59.127 に答える
3

適切なパターンの 1 つは "^\d\.\d{3}" ですが、それを取得するには一致を実行する必要があります (つまり、必要なものをフェッチしているので、不要なものを置き換えているわけではありません)。あなたの例では)。

...しかし、なぜこの仕事に正規表現を使用するのでしょうか?

正規表現は、テキスト内の一般的なパターンを見つけるために使用され、それらを抽出/削除/一覧表示できます。文字列測定を扱うことを意図したものではありません

必要なのは、substring メソッドを使用して、文字列を文字のサブセットにスライスすることです。

myString.substring(5);

小数点の位置が異なる場合:

myString.substring(myString.indexOf(".") + 4);

覚えておいてください: 「ある問題に直面したとき、「分かった、正規表現を使おう」と考える人がいます。今、彼らは 2 つの問題を抱えています。( http://www.codinghorror.com/blog/2008/06/regular-expressions-now-you-have-two-problems.html )

于 2013-04-21T06:42:25.230 に答える
2

これを試して:

String newString = myString.replaceAll"(.*\\....).*", "$1");
于 2013-04-21T06:40:46.720 に答える