parse_ints Function

public function parse_ints(line) result(ints)

parse positive ints from a string that also includes text

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: line

Return Value integer, dimension(:), allocatable


Source Code

    function parse_ints(line) result(ints)
        character(len=*),intent(in) :: line
        integer,dimension(:),allocatable :: ints ! array of integers
        integer :: i, j, n
        integer :: istart
        character(len=*),parameter :: tokens = '0123456789'

        n = len(line)
        istart = 0
        allocate(ints(0))

        do i = 1, n
            if (index(tokens,line(i:i))>0) then
                if (istart==0) istart = i
            else
                if (istart/=0) ints = [ints, int(line(istart:i-1))] ! get previous int
                istart = 0
            end if
        end do
        if (istart/=0) ints = [ints, int(line(istart:n))] ! get last int

    end function parse_ints