quote(3f) - [M_strings:QUOTES] add quotes to string as if written with list-directed input (LICENSE:PD)
Synopsis
Description
Options
Result
Example
Author
License
function quote(str,mode,clip) result (quoted_str)
character(len=*),intent(in) :: str character(len=*),optional,intent(in) :: mode logical,optional,intent(in) :: clip character(len=:),allocatable :: quoted_str
Add quotes to a CHARACTER variable as if it was written using list-directed input. This is particularly useful for processing strings to add to CSV files.
str input string to add quotes to, using the rules of list-directed input (single quotes are replaced by two adjacent quotes) mode alternate quoting methods are supported: DOUBLE default. replace quote with double quotes ESCAPE replace quotes with backslash-quote instead of double quotes
clip default is to trim leading and trailing spaces from the string. If CLIP is .FALSE. spaces are not trimmed
quoted_str The output string, which is based on adding quotes to STR.
Sample program:
program demo_quote use M_strings, only : quote implicit none character(len=:),allocatable :: str character(len=1024) :: msg integer :: ios character(len=80) :: inline do write(*,(a),advance=no)Enter test string: read(*,(a),iostat=ios,iomsg=msg)inline if(ios.ne.0)then write(*,*)trim(inline) exit endif! the original string write(*,(a))ORIGINAL [//trim(inline)//]
! the string processed by quote(3f) str=quote(inline) write(*,(a))QUOTED [//str//]
! write the string list-directed to compare the results write(*,(a),iostat=ios,iomsg=msg) LIST DIRECTED: write(*,*,iostat=ios,iomsg=msg,delim=none) inline write(*,*,iostat=ios,iomsg=msg,delim=quote) inline write(*,*,iostat=ios,iomsg=msg,delim=apostrophe) inline enddo end program demo_quote
John S. Urban
Public Domain
quote (3) | March 11, 2021 |