@brief This function return index of i'th substring in string @details if ind is negative, backward search will be result is equal 0 if search was failed @author Igor S. Gerasimov @date May, 2021 --Initial release-- @param substring - (in) @param string - (in) @param ith - (in) index of needed substring
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | substring | |||
character(len=*), | intent(in) | :: | string | |||
integer, | intent(in) | :: | ith |
pure integer function index_ith(substring, string, ith) result(res) character(len=*), intent(in) :: substring, string integer, intent(in) :: ith ! internal variables character(len=:), allocatable :: tmp_string integer :: i, diff res = 0 tmp_string = string if (ith > 0) then do i = 1, ith diff = index(tmp_string, substring) res = res+diff if (diff == 0) then res = 0 exit end if tmp_string = tmp_string(index(tmp_string, substring)+1:) end do else if (ith < 0) then do i = -1, ith, -1 res = index(tmp_string, substring, back=.true.) if (res == 0) exit tmp_string = tmp_string(:index(tmp_string, substring, back=.true.)-1) end do else res = 0 end if end function index_ith