如何删除'='和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
这将删除所有空白,无论是在中间、结尾还是开头,这没有帮助。
您可以使用 index
和 adjustl
这两个函数来完成此操作。
index
查找字符串中子字符串的位置;
adjustl
使前导空白尾随空白。
整数 idx
idx = INDEX(instring, '=')+1
outstring = ADJUSTL(instring(idx:))
因此,给定输入字符串
instring = ' = 17'
index
结果将是 2
,给出 idx
值 3
。 instring(3:)
的值 ' 17'
从 adjustl
' returns '17 '
给定输入字符串
instring = ' -33'
没有 '=
',index
结果将是 0
。
我从文件中读取数据并解析它们以存储在一些变量中。数据在文件中写入如下,
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
这将删除所有空白,无论是在中间、结尾还是开头,这没有帮助。
您可以使用 index
和 adjustl
这两个函数来完成此操作。
index
查找字符串中子字符串的位置;adjustl
使前导空白尾随空白。整数 idx idx = INDEX(instring, '=')+1 outstring = ADJUSTL(instring(idx:))
因此,给定输入字符串
instring = ' = 17'
index
结果将是 2
,给出 idx
值 3
。 instring(3:)
的值 ' 17'
从 adjustl
' returns '17 '
给定输入字符串
instring = ' -33'
没有 '=
',index
结果将是 0
。