java - 从java中的字符串获取 float 或整数值

标签 java regex string string-parsing

我正在尝试从字符串中获取 float 或整数。 为此,这是我的测试用例..

1) str="IN100RINR"               Output = 100;
2) str="IN100RINR"               Output = 100;
3) str="100INR"                  Output = 100;
4) str="100.50INR"               Output = 100.50;
5) str="IN100.50R"               Output = 100.50;
6) str="INR100.50"               Output = 100.50;
7) str="INR100INRINR20.500INR"   Output = 100 

这一切都在我的程序中工作,但情况 7 不工作..它返回 100.500

这是我的代码...

          Pattern pattern = Pattern.compile("(\\d+)");
    String str="INR100INRINR20.500INR", amount="", decimal="";
    if(str.contains(".")){
        String temp= str.substring(str.indexOf(".")+1); 
        Matcher matcher = pattern.matcher(temp);
        if(matcher.find()){
            decimal = matcher.group();
        }
    }
          Matcher matcher = pattern.matcher(str);
    if(matcher.find()){
        if(decimal != ""){
            amount=matcher.group()+"."+decimal;
        }else{
            amount = matcher.group();
        }

      System.out.println(Float.valueOf(amount));
    }

最佳答案

你可以使用一个简单的匹配器/查找方法来做类似的事情:

Pattern pattern = Pattern.compile("\\d+(?:\\.\\d+)?"); // Match int or float
String str="INR100INRINR20.500INR";
Matcher matcher = pattern.matcher(str);
if(matcher.find()){
    System.out.println(matcher.group());
}

ideone demo

关于java - 从java中的字符串获取 float 或整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22652881/

相关文章:

java - HttpComponents PoolingHttpClientConnectionManager maxPerRoute 和 maxTotal?

javascript - 保留文本但消除标签之间的 CR LF

Java 正则表达式 回溯

regex - 使用正则表达式将 URL 提取到新的数据框列中

java - Spring Boot @Transactional 和 @RestController

java - 如何在java中禁用按钮3秒

java - gson.toJson返回数据类的空对象

java - 为什么空正则表达式和空捕获组正则表达式返回字符串长度加一结果

swift - 使用 Swift 删除字符串中的一行字符

java - 如何构建一个从两个等长输入字符串中获取交替字符的字符串?