Eliminate multiple space characters in a string. If full is .TRUE., then all spaces are eliminated.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(inout) | :: | string | |||
logical, | intent(in), | optional | :: | full |
SUBROUTINE compress(string, full)
!! Eliminate multiple space characters in a string.
!! If full is .TRUE., then all spaces are eliminated.
CHARACTER(LEN=*), INTENT(INOUT) :: string
LOGICAL, INTENT(IN), OPTIONAL :: full
CHARACTER :: tmp
INTEGER :: i, z
LOGICAL :: remove_all
IF (PRESENT(full)) THEN
remove_all = full
ELSE
remove_all = .FALSE.
END IF
z = 1
DO i = 1, LEN_TRIM(string)
IF ((z == 1) .OR. remove_all) THEN
IF (string(i:i) /= " ") THEN
tmp = string(i:i)
string(z:z) = tmp
z = z + 1
END IF
ELSE
IF ((string(i:i) /= " ") .OR. (string(z - 1:z - 1) /= " ")) THEN
tmp = string(i:i)
string(z:z) = tmp
z = z + 1
END IF
END IF
END DO
string(z:) = ""
END SUBROUTINE compress