stdlib
stdlib copied to clipboard
Functions for the built-in string type
A few string functions I would like are
count_char-- Count the number of times a single charactercappears in a character variablespos_char-- Returns an integer array of the positions wherecappears insreplace-- Replace characterawithbinscompress-- Replace 2 or more consecutive occurrences of a character inswith a single occurrence. This is useful for replacing multiple spaces with a single space.upper_caselower_case
Here is an implementation of count_char.
module string_funcs_mod
implicit none
private
public :: count_char
contains
elemental function count_char(s, c) result(ncount)
! count the number of times character c appears in string s
character(len=*), intent(in) :: s
character, intent(in) :: c
integer :: ncount, i, len_trim_s
len_trim_s = len_trim(s)
ncount = 0
do i = 1, len_trim_s
if (s(i:i) == c) ncount = ncount + 1
end do
if (c == ' ') ncount = ncount + len(s) - len_trim_s
end function count_char
end module string_funcs_mod
!
program xstring_funcs
use string_funcs_mod
implicit none
print "(*(1x,i0))", count_char("hello world ", ["l", "a", " "])
end program xstring_funcs
output:
3 0 2
Functions 5 and 6 are available in stdlib_ascii as to_upper/to_lower. Also available for type(string_type) in stdlib_string_type.