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