如何使用`regex`修剪已解析的字符串?

时间:2013-04-21 06:29:12

标签: java regex string

我本可以使用Decimal Format,但在这种情况下我必须使用regex。 我有以下字符串myString =“0.44587628865979384”;我需要将其修剪为三位小数,因此看起来像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?

3 个答案:

答案 0 :(得分:5)

不是(^0$.)。这是(\\d*.)

String newString = myString.replaceAll("(\\d*.)(\\d{3})(\\d+)", "$1$2");

答案 1 :(得分:3)

嗯,一个合适的模式可能是“^ \ d \。\ d {3}”,但你必须做一个匹配来检索它(即你正在取得你需要的东西,而不是取代你所做的'我需要你的例子。)

...但是,为什么你会使用正则表达式来完成这项工作?

正则表达式用于查找文本中的常见模式,并允许您提取/删除/列出它们。它不打算处理字符串测量

您需要的是使用子字符串方法将字符串切换到字符子集中:

myString.substring(5);

如果小数点的位置不同:

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

记住:“有些人在遇到问题时会想”我知道,我会使用正则表达式。“现在他们有两个问题。” (http://www.codinghorror.com/blog/2008/06/regular-expressions-now-you-have-two-problems.html

答案 2 :(得分:2)

试试这个:

String newString = myString.replaceAll"(.*\\....).*", "$1");