我从文件中读取数据并解析它们以存储在某些变量中。数据如下所示写入文件中,
INT_VALUE = 17 # Valid Integer
INT_VALUE1 23
INT_VALUE2 = 00012
INT_VALUE3 -2
INT_VALUE4 -33
在某些地方有空格,在其他一些地方有'='。在读取时,我得到的流%val带有'=',而我的值是' = 17'
,我需要删除=以及'='符号和第一个数字之间的空格并存储为有效数字。>
在其他情况下,数字之间可能会有空格,这应该是错误的。
无效值将是带有特殊字符的任何非整数/实数值。例如,
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
这会删除所有空格,无论是在中间,结尾还是开头都无济于事。
答案 0 :(得分:1)
您可以使用两个功能index
和adjustl
来做到这一点。
index
查找字符串中子字符串的位置; adjustl
使前导空白与尾随空白。
整数idx idx = INDEX(instring,'=')+ 1 outstring = ADJUSTL(instring(idx:))
所以,给定输入字符串
instring = ' = 17'
index
的结果将是2
,并赋予idx
值3
。 instring(3:)
的值为' 17'
,adjustl
'从中返回'17 '
给出输入字符串
instring = ' -33'
没有'=
'的index
结果将是0
。