我有一個包含字符串的文件,該字符串又包含10位數字。我需要用正則表達式提取數字,並將它們放入數組中。 我想我可以使用\d{10}
,但我不確定如何實際將其應用於Java。從字符串獲取一組數字
此外,複雜性的另一個元素是潛在的,如果有很多數字,可能會有多個不同形式的數字,如123456745-9
和123456745-95
表示一個範圍。我想提取這些數字。 (我可以處理在java中創建數字範圍,正則表達式不是必需的)
任何提示將不勝感激!
我有一個包含字符串的文件,該字符串又包含10位數字。我需要用正則表達式提取數字,並將它們放入數組中。 我想我可以使用\d{10}
,但我不確定如何實際將其應用於Java。從字符串獲取一組數字
此外,複雜性的另一個元素是潛在的,如果有很多數字,可能會有多個不同形式的數字,如123456745-9
和123456745-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'
會有可能保持數字與 - 在一起?否則對我來說難以跟蹤哪些信號會聚在一起 – Lemonio
對不起,我沒有看到您的回覆。您已經有了答案,但爲了完整起見,我在回答 – greedybuddha
你想要什麼最終陣列的內容是什麼?整型?字符串? 此外,將123456745-9表示5個唯一編號(123456745,123456746,...,123456749)還是什麼?如果是這樣,那些不是10位數字。 文件是如何組織的?按行?它是什麼記錄?每行只包含一個10位數字嗎? – John
假設我有bla bla bla 123456789 bla bla 123456789 bla bla 123456765-9 bla bla bla 123456767-89 bla bla 從上面我想要得到[123456789,123456789,123456765-9,123456767-89] – Lemonio