如何删除'='和fortran中的值之间的空格

how to remove empty spaces between '=' and values in fortran

我从文件中读取数据并解析它们以存储在一些变量中。数据在文件中写入如下,

INT_VALUE           =                   17 # Valid Integer
INT_VALUE1                              23
INT_VALUE2          =                   00012
INT_VALUE3                             -2
INT_VALUE4                             -33

有些地方有空格,有些地方有'='。在阅读时,我得到带有 '='and my value comes as ' = 17' of which I need to remove = and the spaces between '=' 符号和第一个数字的 stream%val 并存储为有效数字。

在其他一些情况下,数字之间可能有空格,这应该是一个错误。

无效值将是任何具有特殊字符的非 integer/real 值。例如,

INT_VALUE13                            34=5434
INT_VALUE14                            -23 45-33
INT_VALUE15         =                  23-45*665Rtre
INT_VALUE16                            -23.4
INT_VALUE17                            1.4E9r23
INT_VALUE18                            -5.D-3.3
INT_VALUE19                            233 ddf
INT_VALUE20                            -87 dfsdf
INT_VALUE21         =                  rtmr,t23./

如何删除 fortran 中的空格?

我的职能是,

character(60) function sweep_blanks(in_str)
    character(*), intent(in) :: in_str
    character(60) :: out_str
    character :: ch
    integer :: j
    out_str = " "
    do j=1, len_trim(in_str)
        ch = in_str(j:j)
        if (ch .ne. " ") then
            out_str = trim(out_str) // ch
        endif
        sweep_blanks = out_str
    end do
end function sweep_blanks

这将删除所有空白,无论是在中间、结尾还是开头,这没有帮助。

您可以使用 indexadjustl 这两个函数来完成此操作。

  • index 查找字符串中子字符串的位置;
  • adjustl 使前导空白尾随空白。

    整数 idx idx = INDEX(instring, '=')+1 outstring = ADJUSTL(instring(idx:))

因此,给定输入字符串

instring = ' =        17'

index 结果将是 2,给出 idx3instring(3:) 的值 ' 17'adjustl' returns '17 '

给定输入字符串

instring = '                    -33'

没有 '=',index 结果将是 0