Printing 如何在Fortran中组合两个字符串
下面是python3中的一个示例,说明了我想在Fortran中执行的操作:Printing 如何在Fortran中组合两个字符串,printing,fortran,Printing,Fortran,下面是python3中的一个示例,说明了我想在Fortran中执行的操作: str1 = "Hello" str2 = " World!" print(str1 + str2) # And then the result would be "Hello World!" 当我这样做时: print "(A)", str1, str2 它把它放在另一行。如果有人知道如何帮助,请回答。可能接近您想要的: zz=trim(xx)//trim(yy) 另一个答案中给出了使用/运算符的字符串串联的
str1 = "Hello"
str2 = " World!"
print(str1 + str2)
# And then the result would be "Hello World!"
当我这样做时:
print "(A)", str1, str2
它把它放在另一行。如果有人知道如何帮助,请回答。可能接近您想要的:
zz=trim(xx)//trim(yy)
另一个答案中给出了使用
/
运算符的字符串串联的文字答案。请特别注意,您可能希望TRIM
第一个参数
但你的问题提出了另一个有趣的概念,那就是格式反转
对于格式(A)
,我们有一个格式项。在输出列表中,我们有两个输出项。在通用输出语句中,我们将每个格式项(具有重复计数)应用于相应的输出项。因此,str1
使用第一个格式项A
进行处理,并显示一个字符串
第二个输出项str2
我们已经使用了单个格式项,到达了格式项列表的末尾。结果是我们看到了这种格式转换:也就是说,我们返回到列表中的第一项。关键的是,之后我们开始新的生产线
因此,如果我们只想将这两个项目打印到一行(它们之间没有空格或空行),我们可以使用(忽略为清晰起见的修剪)
或者我们可以使用一种没有这种反转的格式
print "(2A)", str1, str2
print "(A, A)", str1, str2
第一个将两个字符变量连接起来,得到一个更长的字符变量,然后将其作为单个输出项打印。第二个单独打印
来看看你的例子
character(12), parameter :: str1="Hello" ! Intentionally longer - trailing blanks
character(12), parameter :: str2=" World!"
print "(2A)", TRIM(str1), TRIM(str2)
end
将有类似的输出
Hello World!
使用该中间空格,因为TRIM
不会从str2
中删除前导空格。更广泛地说,虽然我们没有领先的空间,我们希望将其添加到输出中
当然,连接仍然有效(我回到了假设不进行修剪的状态)
但是我们可以选择我们的格式,使用X
编辑描述符来添加一个空格
print "(2(A,1X))", str1, str2
print "(A,1X,A)", str1, str2
print "(2(A,:,1X))", str1, str2
最后一个具有有用的冒号编辑描述符(不在本答案的范围内)。这看起来已经涵盖,但如果您想在同一行上打印大量数据,另一个有用的功能是:
character(len=32),dimension(100) :: str
do i=1,100
write(*,fmt="(A)", advance='no') str(i)
end do
write(*,*) ! to go to the next line when you are done
这将在同一行上打印100个字符,因为advance='no'您可以使用另一个变量将这些字符放入其中,并将这两个字符串写入该新变量:
Program combineString
character(len=100) :: text1, text2, text
text1 = "Hello,"
text2 = "My name is X"
write(text,'(A6, X, A20)') text1, text2
write(*,*) text
End Program
输出为:
Hello, My name is X
谢谢,它现在打印在同一行上,但是字符串之间有很大的空间。我想删除除1之外的所有空格。谢谢您的帮助。您的字符子字符串语法错误。也别忘了在最后完成记录。我想他是想使用字符串数组@标记您应该为
str
添加声明以澄清。根据注释进行编辑以减少您的想象
Program combineString
character(len=100) :: text1, text2, text
text1 = "Hello,"
text2 = "My name is X"
write(text,'(A6, X, A20)') text1, text2
write(*,*) text
End Program
Hello, My name is X