Search code examples
javastringdecimalmatcher

Matching decimals in strings using matcher()


I have a question regarding the matcher. Currently I am trying to read a string and store all the digits into an array. My question is, how do you try to match both integers and decimals?

I have an array of doubles called:

double[] thisArray = new double[20];

Into this array, i am trying to store all the numbers I extract from the string.

Matcher temp = Pattern.compile("(\d+)").matcher(x);

That is my function for the matcher. But this only matches integers. I want to match both integers and decimals like (5.2). But how do I do this? I want to be able to enter in both integers and decimals into my string.

Any help would be appreciated. Thanks!


Solution

  • This will handle both integer and decimals:-

    private Pattern p = Pattern.compile("\\d+(\\.\\d+)?");
    
    @Test
    public void testInteger() {
        Matcher m =p.matcher("10");
    
        assertTrue(m.find());
        assertEquals("10", m.group());
    }
    
    @Test
    public void testDecimal() {
        Matcher m =p.matcher("10.99");
    
        assertTrue(m.find());
        assertEquals("10.99", m.group());
    }