Return the position of the start of the first occurrence of string substring
as a substring in string
, counting from one.
If substring
is not present in string
, zero is returned. If the back argument is present and true, the return value is
the start of the last occurrence rather than the first.
type(string) :: string1
logical :: test_passed(2)
string1 = 'Hello World Hello!'
test_passed(1) = string1%index(substring='llo')==index(string='Hello World Hello!', substring='llo')
test_passed(2) = string1%index(substring='llo', back=.true.)==index(string='Hello World Hello!', substring='llo', back=.true.)
print '(L1)', all(test_passed)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(string), | intent(in) | :: | self |
The string. |
||
character(kind=CK, len=*), | intent(in) | :: | substring |
Searched substring. |
||
logical, | intent(in), | optional | :: | back |
Start of the last occurrence rather than the first. |
Result of the search.
elemental function sindex_string_character(self, substring, back) result(i) !< Return the position of the start of the first occurrence of string `substring` as a substring in `string`, counting from one. !< If `substring` is not present in `string`, zero is returned. If the back argument is present and true, the return value is !< the start of the last occurrence rather than the first. !< !<```fortran !< type(string) :: string1 !< logical :: test_passed(2) !< string1 = 'Hello World Hello!' !< test_passed(1) = string1%index(substring='llo')==index(string='Hello World Hello!', substring='llo') !< test_passed(2) = string1%index(substring='llo', back=.true.)==index(string='Hello World Hello!', substring='llo', back=.true.) !< print '(L1)', all(test_passed) !<``` !=> T <<< class(string), intent(in) :: self !< The string. character(kind=CK, len=*), intent(in) :: substring !< Searched substring. logical, intent(in), optional :: back !< Start of the last occurrence rather than the first. integer :: i !< Result of the search. if (allocated(self%raw)) then i = index(string=self%raw, substring=substring, back=back) else i = 0 endif endfunction sindex_string_character