M_strings and M_strings__oop - 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.
Note there are some procedures with overlapping function that were all initially 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, percent_encode
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, dble, nint
use M_strings, only : atoi, atol, 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
There are descriptions of each procedures in the style of man-pages in three formats:
-
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 installation on GNU/Linux, Unix and CygWin platforms:
-
CHANGELOG provides a history of significant changes
- The code was run through ford(1) to produce a developers' document.
- github action status
Each man-page includes a working example program. These and additional examples are included in the example/ directory.