crop(3f) - [M_strings:WHITESPACE] trim leading and trailing blanks
           and control characters from a string
(LICENSE:PD)
function crop(strin) result (strout)
 character(len=*),intent(in)  :: strin
 character(len=:),allocatable :: strout
All control characters throughout the string are replaced with spaces
and leading and trailing spaces are trimmed from the resulting string.
Tabs are expanded assuming a stop every eight characters.
strin   input string to trim leading and trailing space and control
        characters from
strout  cropped version of input string
Sample program:
program demo_crop
use M_strings, only: crop
implicit none
character(len=20) ::  untrimmed = '   ABCDEFG abcdefg  '
   write(*,*) 'untrimmed string=[',untrimmed,']'
   write(*,*) 'cropped string=[',crop(untrimmed),']'
end program demo_crop
Expected output
  untrimmed string=[   ABCDEFG abcdefg                      ]
  cropped string=[ABCDEFG abcdefg]
John S. Urban
Public Domain
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | strin | 
function crop(strin) result (strout)
! ident_16="@(#) M_strings crop(3f) replace control characters with whitespace and trim leading and trailings spaces from resulting string"
character(len=*),intent(in)  :: strin
character(len=:),allocatable :: strout
   strout=trim(adjustl(noesc(dilate(strin))))
end function crop