Java 在字符串之间匹配多个数字,处理它们并替换
我有一个字符串,其中包含多个数字,必须在同一字符串中再次处理和替换这些数字 例如: 假设我有:Java 在字符串之间匹配多个数字,处理它们并替换,java,regex,pattern-matching,Java,Regex,Pattern Matching,我有一个字符串,其中包含多个数字,必须在同一字符串中再次处理和替换这些数字 例如: 假设我有: my name is anusha, I am a noob in Java having reputation: 3647 haha I am just kidding my actual reputation is 0001 现在让我们假设我想提取3647,然后对它进行乘法、除法或加法。让我们除以3647/100=36.47,替换为与0001相同的字符串中的原始数字,并替换为00.01 结果字符
my name is anusha, I am a noob in Java having reputation: 3647 haha I am just kidding my actual reputation is 0001
现在让我们假设我想提取3647,然后对它进行乘法、除法或加法。让我们除以3647/100=36.47,替换为与0001相同的字符串中的原始数字,并替换为00.01
结果字符串应为:
my name is anusha, I am a noob in Java having reputation: 36.47 haha I am just kidding my actual reputation is 00.01
谢谢你的帮助。我知道这对很多人来说是愚蠢的,但我仍在学习
我试着做:
Pattern intsOnly = Pattern.compile("\\d+");
Matcher makeMatch = intsOnly.matcher("my name is anusha, I am a noob in Java having reputation: 3647 haha I am just kidding my actual reputation is 0001");
makeMatch.find();
String inputInt = makeMatch.group();
System.out.println(inputInt);
但很明显,它只拾取第一个数字,因为我没有使用循环,而且我也不确定如何处理这个数字
使用
模式
和匹配器
可以找到数字的位置
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(yourStringGoesHere);
while (matcher.find()) {
System.out.print("Start index: " + matcher.start());
System.out.print(" End index: " + matcher.end() + " ");
System.out.println(matcher.group());
}
那你就可以用了。我找到了
抱歉英语:/试试这个:
final String regex = "\\d+";
String string = "my name is anusha, I am a noob in Java having reputation: 3647 haha I am just kidding my actual reputation is 0001";
NumberFormat formatter = new DecimalFormat("00.00");
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
Float val=new Float(matcher.group(0));
val=val/100;
string=string.replace(matcher.group(0),formatter.format(val));
}
System.out.println(string);
}
输出:
my name is anusha, I am a noob in Java having reputation: 36.47 haha I am just kidding my actual reputation is 00.01
你试过什么了吗?请看。告诉我们你已经尝试了什么,什么不起作用。是的,明白了。在问题中添加了我的试验。谢谢谢谢你的快速回复。我尝试了您提供的逻辑,它对大多数情况下都很好,但对于一些数字,例如10034打印为100.0000.00.34等。与此同时,我试图理解您的代码,只是想通知您。谢谢你的帮助。它应该打印成100.34,就像我刚才试过的那样。。。你需要给我一个更大的样品有这样的东西。。还有一件事,这些数字会用空格分隔吗?Space10034这样的空间?在我的正则表达式中,没有捕获组。。。我所做的就是匹配数字。。。。组(0)匹配整个正则表达式。。。在这种情况下,只有数字。。。我想知道的是,如果你使用了我的格式“00.00”,那么你怎么会得到“100.0000.00.34”“结果。。这将有助于你给我完整的样本字符串,你已经尝试了代码是的,他们将被分隔的空间。我正在尝试阅读stackoverflow.com/questions/16517689/…以了解目前模式匹配中的组,我也很兴奋。我使用的示例是:[报告单次填充限制]客户:270009235,来自合作伙伴:EM\u钱包,填充:8001美分,超过了允许的单次填充限制:8000。因此,我在regex的“\\d+”前后添加了空格,它成功了。
my name is anusha, I am a noob in Java having reputation: 36.47 haha I am just kidding my actual reputation is 00.01