Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | a | |||
character(len=*), | intent(in) | :: | b |
pure function extract_same_part_prefix (a, b) result(res) use :: forgex_utf8_m implicit none character(*), intent(in) :: a, b character(:), allocatable :: res character(:), allocatable :: buf integer :: i, ie, n res = '' buf = '' n = min(len(a), len(b)) do i = 1, n if (a(i:i) == b(i:i)) then buf = buf//a(i:i) else exit end if end do ! Handling UTF8 fragment bytes n = len(buf) i = 1 do while (i <= n) ie = idxutf8(buf, i) if (n < ie) exit if (is_valid_multiple_byte_character(buf(i:ie))) then res = res//adjustl_multi_byte(buf(i:ie)) end if i = ie + 1 end do end function extract_same_part_prefix