簡體   English   中英

從字符串中獲取一組數字

[英]Get a group of numbers from a string

我有一個包含字符串的文件,該字符串又包含10位數字。 我需要使用正則表達式提取數字並將其放入數組中。 我認為我可以使用\\d{10}但不確定如何在Java中實際應用。

同樣,如果存在大量數字,則可能會增加復雜性,可能會存在多個具有不同形式的數字,例如123456745-9123456745-95表示一個范圍。 我也想提取這些數字。 (我可以處理在Java中創建數字范圍的情況,正則表達式不是必需的)

任何提示將不勝感激!

您可以分割非數字字符,但保留-

String[] numbers = input.split("[^\\-\\d]+");

例:

String input = "bla bla bla 123456789 bla bla 123456789 bla bla 123456765-9 bla bla bla 123456767-89 bla bla";
input = input.replaceFirst("^[^\\-\\d]*", ""); //remove the leading non-digits if any
String[] numbers = input.split("[^\\-\\d]+"); //split
System.out.println(Arrays.toString(numbers));

輸出:

[123456789, 123456789, 123456765-9, 123456767-89]

正則表達式比您想象的要簡單。 您只需要匹配任何數字一次或多次。

例:

String line = "a line with some digits 123456745-9 and maybe some more 343-34 and a single 1 99 ";
String regexpattern = "(\\d+)(-(\\d+))?";
Pattern pattern = Pattern.compile(regexpattern);
Matcher matcher = pattern.matcher(line);
while (matcher.find()){
    System.out.println("number= '" + matcher.group(1)+"'");
    if (matcher.group(3) != null)
        System.out.println("range '" + matcher.group(3)+"'");
}

此輸出如下

number= '123456745'
ranges to '9'
number= '343'
ranges to '34'
number= '1'
number= '99'

暫無
暫無

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

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