If statement Fortran中涉及多个字符串的压缩if检查

If statement Fortran中涉及多个字符串的压缩if检查,if-statement,fortran,If Statement,Fortran,是否有一种方法可以检查字符串是否等于列表中的任何一个字符串,而不是使用==单独显式检查?比如说, if(color=='violet' .or. color=='indigo' .or. color=='blue' .or.& color=='green' .or. color=='yellow' .or. color=='orange' .or. color=='red') then print *, "It is a rainbow color" en

是否有一种方法可以检查字符串是否等于列表中的任何一个字符串,而不是使用
==
单独显式检查?比如说,

if(color=='violet' .or. color=='indigo' .or. color=='blue' .or.&
   color=='green' .or. color=='yellow' .or. color=='orange' .or. color=='red') then
   print *, "It is a rainbow color"
end if

有没有办法做到这一点?类似于
if(color='violet | indigo | blue | green | yellow | orange | red')

您可以将颜色放入数组并使用
any

if (any(color == [character(6) :: "violet","indigo","blue","green","yellow","orange","red"]))

您可以将颜色放入数组并使用
any

if (any(color == [character(6) :: "violet","indigo","blue","green","yellow","orange","red"]))

我相信我的问题已经得到了回答,但你联系的问题是different@SKPS我实际上没有链接任何东西。这一个是相同的,但因为它没有答案,它不能是重复的目标。也许我们现在可以将其作为另一个方向的目标,即使另一个更老。我相信我的问题已经得到了回答,但你联系的问题是different@SKPS我实际上没有链接任何东西。这一个是相同的,但因为它没有答案,它不能是重复的目标。也许我们现在可以将其作为另一个方向的目标,即使另一个更老。这个问题本质上与相同(但不能被标记为重复)。基本前提是使用数组(构造字符数组)并使用。这个问题本质上与相同(但不能标记为重复)。基本前提是使用数组(构造字符数组)并使用。