主题:不区别大小写的字符串比较
rainboat8
[专家分:30] 发布于 2011-09-24 21:07:00
求这样一个函数,确定两个字符串是否相同,比较过程不区别大小写,即“A”和“a”是相同的字符串
回复列表 (共5个回复)
沙发
yeg001 [专家分:14390] 发布于 2011-09-25 09:57:00
自己写的话, 先统一转换成大写或者小写, 再比较. 现成的我没.
板凳
rainboat8 [专家分:30] 发布于 2011-09-25 13:53:00
[quote]自己写的话, 先统一转换成大写或者小写, 再比较. 现成的我没.[/quote]
谢谢您提供这个思路
3 楼
臭石头雪球 [专家分:23030] 发布于 2011-09-26 09:02:00
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 楼
nuciewth [专家分:670] 发布于 2011-09-28 16:00:00
flag =s[i] -t[i];
if(flag==0||flag==32!flag=-32)continue
else return -1;
5 楼
cgl_lgs [专家分:21040] 发布于 2011-09-28 20:35:00
楼上用C就别忘了分号,要不就别用C:)
我来回复