I’m writing a program where the user enters a String in the following format:
"What is the square of 10?"
- I need to check that there is a number in the String
- and then extract just the number.
- If i use
.contains("\d+")
or.contains("[0-9]+")
, the program can’t find a number in the String, no matter what the input is, but.matches("\d+")
will only work when there is only numbers.
What can I use as a solution for finding and extracting?
Advertisement
Answer
The solution I went with looks like this:
Pattern numberPat = Pattern.compile("\d+"); Matcher matcher1 = numberPat.matcher(line); Pattern stringPat = Pattern.compile("What is the square of", Pattern.CASE_INSENSITIVE); Matcher matcher2 = stringPat.matcher(line); if (matcher1.find() && matcher2.find()) { int number = Integer.parseInt(matcher1.group()); pw.println(number + " squared = " + (number * number)); }
I’m sure it’s not a perfect solution, but it suited my needs. Thank you all for the help. 🙂