簡體   English   中英

匹配$ {123…456}並在Java中提取2個數字?

[英]Matching ${123…456} and extracting 2 numbers in Java?

當我知道格式將始終為${INT1...INT2}時,從字符串中期望2個整數的最簡單的簡潔方法是什么,例如“ Hello ${123...456}將提取123,456

我會去同一個Pattern與團體和反向引用。

這是一個例子:

String input = "Hello ${123...456}, bye ${789...101112}";
//                           | escaped "$"
//                           |  | escaped "{"
//                           |  |  | first group (any number of digits)
//                           |  |  |    | 3 escaped dots
//                           |  |  |    |       | second group (same as 1st)
//                           |  |  |    |       |    | escaped "}"
Pattern p = Pattern.compile("\\$\\{(\\d+)\\.{3}(\\d+)\\}");
Matcher m = p.matcher(input);
// iterating over matcher's find for multiple matches
while (m.find()) {
    System.out.println("Found...");
    System.out.println("\t" + m.group(1));
    System.out.println("\t" + m.group(2));
}

輸出量

Found...
    123
    456
Found...
    789
    101112
final String string = "${123...456}";
final String firstPart = string.substring(string.indexOf("${") + "${".length(), string.indexOf("..."));
final String secondPart = string.substring(string.indexOf("...") + "...".length(), string.indexOf("}"));
final Integer integer = Integer.valueOf(firstPart.concat(secondPart));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM