回 帖 发 新 帖 刷新版面

主题:不区别大小写的字符串比较

求这样一个函数,确定两个字符串是否相同,比较过程不区别大小写,即“A”和“a”是相同的字符串

回复列表 (共5个回复)

沙发

自己写的话, 先统一转换成大写或者小写, 再比较. 现成的我没.

板凳

[quote]自己写的话, 先统一转换成大写或者小写, 再比较. 现成的我没.[/quote]
谢谢您提供这个思路

3 楼

Subroutine ConvertToUpperCase(Str)
      Implicit None
      Character*(*)::Str
        Integer::Lens=0,i
        Lens=Len_Trim(Str)
      Do i=1,Lens
        If ((IChar(Str(i:i)).ge.97).and.(IChar(Str(i:i)).le.122)) then
          Str(i:i)=Char(IChar(Str(i:i))-32)
          End If
      End do
    End Subroutine ConvertToUpperCase

    Subroutine ConvertToLowerCase(Str)
      Implicit None
      Character*(*)::Str
        Integer::Lens=0,i
        Lens=Len_Trim(Str)
      Do i=1,Lens
        If ((IChar(Str(i:i)).ge.65).and.(IChar(Str(i:i)).le.90)) then
          Str(i:i)=Char(IChar(Str(i:i))+32)
          End If
      End do
    End Subroutine ConvertToLowerCase

    Logical Function UnMatchCaseEq(Str1,Str2)
      Implicit None
      Character*(*),Intent(In)::Str1,Str2
      Character*(512)::StrTemp1
      Character*(512)::StrTemp2
      integer l
      StrTemp1=''
      StrTemp2=''
      StrTemp1=Str1
      StrTemp2=Str2
      l=Len_Trim(Str1)
      Call ConvertToLowerCase(StrTemp1)
        Call ConvertToLowerCase(StrTemp2)
      UnMatchCaseEq=.False.
      If (Trim(StrTemp1)==Trim(StrTemp2)) then
        UnMatchCaseEq=.True.
      End If
        Return
    End Function UnMatchCaseEq

4 楼

flag =s[i] -t[i];
if(flag==0||flag==32!flag=-32)continue
else return -1;

5 楼

楼上用C就别忘了分号,要不就别用C:)

我来回复

您尚未登录,请登录后再回复。点此登录或注册