There are various ways to extract digits from a string in Java. The easiest and straightforward solution is to use the regular expression along with the
The following example shows how you can use the
replaceAll() method to extract all digits from a string in Java:
// string contains numbers String str = "The price of the book is $49"; // extract digits only from strings String numberOnly = str.replaceAll("[^0-9]", ""); // print the digitts System.out.println(numberOnly);
The above example will output
49 on the console. Notice the regular expression
[^0-9] we used above. It indicates that replace everything except digits from 0 to 9 with an empty string. This is precisely what we need.
Alternatively, You can also use
\\D+ as a regular expression because it produces the same result:
String numberOnly = str.replaceAll("\\D+", "");
replaceAll() method compiles the regular expression every time it executes. It works for simple use cases but is not an optimal approach. You should rather use the
Pattern class to compile the given regular expression into a pattern as shown below:
Pattern pattern = Pattern.compile("[^0-9]"); String numberOnly = pattern.matcher(str).replaceAll("");
👋 If you enjoy reading my articles and want to support me to continue creating free tutorials, ☕ Buy me a coffee (cost $5).