在Java中找不到字符串中的模式数量

时间:2018-08-13 14:33:30

标签: java regex

我有一个字符串,其中指定了特定媒体的大小。我想搜索尺寸并打印。

sampleString =“具有示例4.5GB的示例文本”

注意:字符串可以具有多个模式,例如[4.0GB,4.0MB,4GB,70MB]

“ GB”或“ MB”可以是整数或浮点数。

我的想法是在字符串中搜索上述模式,然后用找到的MB或GB分割它,然后获取与其对应的整数或浮点数。

我已经开始寻找模式,但是代码无法正常工作。下面是我的代码:

public class CheckSize {
    public static void main(String args[]) {
        System.out.println(size("Sample text having sample 4.5GB"));
    }

    private static String size(String mString) {
        Float size = 0f;
        String mbSize = "";
        String gbSize = "";
        boolean found = mString.matches("\\d");

        if (found) {
            return "size available";
        }
        else {
            return "size is not available";
        }
    }
}

请帮助。

1 个答案:

答案 0 :(得分:2)

使用正式的正则表达式匹配器可能可以最好地解决此问题。这是一个基本代码,向您显示如何使用它:

String line = "My first thumb drive stored 1.5GB, but second stored 1TB.";
String pattern = "\\b(\\d+(?:\\.\\d+)?)(?:MB|GB|TB)\\b";

Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);

while (m.find()) {
    System.out.println("Found value: " + m.group(1) );
}

Found value: 1.5
Found value: 1

Demo

这里的基本思想是我们可以多次遍历您的文本,在每次匹配时都暂停,以打印出存储大小字符串之前的数字。