我本可以使用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?
答案 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");