
M_strings and M_strings_oops - Fortran modules for processing strings
The M_strings(3fm) module is a collection of Fortran procedures that
supplement the built-in intrinsic string routines.  Routines for parsing
tokenizing, changing case, substituting new strings for substrings
locating strings with simple wildcard expressions, removing tabs and
line terminators as well as other string manipulations are included.
M_strings_oop(3fm) is a companion module that provides an OOP interface
to the M_strings module.
There are procedures with overlapping function that are all gathered here that have varying performance and robustness that may be consolidated at some point.
public entities:
use M_strings, only : split, sep, delim, chomp, strtok           
   use M_strings, only : split2020, find_field           
   use M_strings, only : substitute, change, modif, transliterate, reverse, squeeze           
   use M_strings, only : replace, join           
   use M_strings, only : upper, lower, upper_quoted           
   use M_strings, only : rotate13           
   use M_strings, only : adjustc, compact, nospace, indent           
   use M_strings, only : crop, clip, unquote, quote, matching_delimiter           
   use M_strings, only : len_white, pad, lpad, cpad, rpad, zpad, stretch, lenset, merge_str           
   use M_strings, only : switch, s2c, c2s           
   use M_strings, only : noesc, notabs, dilate, expand, visible           
   use M_strings, only : longest_common_substring           
   use M_strings, only : string_to_value, string_to_values, s2v, s2vs           
   use M_strings, only : value_to_string, v2s, msg           
   use M_strings, only : listout, getvals           
   use M_strings, only : glob, ends_with           
   use M_strings, only : paragraph           
   use M_strings, only : base, decodebase, codebase, base2           
   use M_strings, only : isalnum, isalpha, iscntrl, isdigit           
   use M_strings, only : isgraph, islower, isprint, ispunct           
   use M_strings, only : isspace, isupper, isascii, isblank, isxdigit           
   use M_strings, only : isnumber           
   use M_strings, only : fortran_name           
   use M_strings, only : describe           
   use M_strings, only : edit_distance           
   use M_strings, only : cc           
   use M_strings, only : int, real, dble, nint           
   use M_strings, only : int, real, dble
The M_strings(3fm) module supplements and works in combination with the Fortran built-in intrinsics. Standard Fortran lets you access the characters in a string using ranges much like they are character arrays assignment, comparisons with standard operators, supports dynamically allocatable strings and supports concatenation using the // operator:
 adjustl             Left adjust a string
 adjustr             Right adjust a string
 index               Position of a substring within a string
 repeat              Repeated string concatenation
 scan                Scan a string for the presence of a set of characters
 trim                Remove trailing blank characters of a string
 verify              Scan a string for the absence of a set of characters
 len                 It returns the length of a character string
 achar               converts an integer into a character
 iachar              converts a character into an integer
 len_trim            finds length of string with trailing spaces ignored
 new_line            Newline character
 selected_char_kind  Choose character kind
 lge                 Lexical greater than or equal
 lgt                 Lexical greater than
 lle                 Lexical less than or equal
 llt                 Lexical less than

Just download the github repository, enter the src/ directory and run make:
 git clone https://github.com/urbanjost/M_strings.git
 cd M_strings/src
 # change Makefile if not using one of the listed compilers
 # for gfortran
 make clean
 make F90=gfortran gfortran
 # for ifort
 make clean
 make F90=ifort ifort
 # for nvfortran
 make clean
 make F90=nvfortran nvfortran
 # optionally
 make test # run the unit tests
 make run  # run all the demo programs from the man-pages
 make help # see other developer options
This will compile the M_strings(3f) module and optionally build all the example programs from the document pages in the example/ sub-directory and run the unit tests.

Alternatively, download the github repository and build it with fpm ( as described at Fortran Package Manager )
     git clone https://github.com/urbanjost/M_strings.git
     cd M_strings
     fpm build
     fpm test  # run unit tests
or just list it as a dependency in your fpm.toml project file.
     [dependencies]
     M_strings        = { git = "https://github.com/urbanjost/M_strings.git" ,tag="v1.0.1"}
Note that M_strings.f90 is registered at the fpm(1) registry

In addition to a markdown document with links to some of the most commonly used procedures, there are HTML documents for each subprogram in the style of man-pages:
An index to the HTML versions of the man-pages.
A single page (that uses javascript) combining all the HTML descriptions of the man-pages for easy searching and printing: BOOK_M_strings.
 man-page archives for use on GNU/Linux, Unix and CygWin platforms:
 man-page archives for use on GNU/Linux, Unix and CygWin platforms:

Each man-page includes a working example program. These and additional examples are included in the example/ directory.