关于String比较的问题,在线等.....

wss_scaler 2009-08-25 12:27:45
public int compare(String s, String s1)
{
int i = s.length();
int j = s1.length();
int k = 0;
for (int l = 0; k < i && l < j; l++)
{
char c = s.charAt(k);
char c1 = s1.charAt(l);
if (c != c1)
{
c = Character.toUpperCase(c); //(1)
c1 = Character.toUpperCase(c1);
if (c != c1)
{
c = Character.toLowerCase(c);
c1 = Character.toLowerCase(c1);//(2)
if (c != c1)
return c - c1;
}
}
k++;
}

return i - j;
}

问题:(1)处字符大写如果不相等,(2)处小写会相等吗?求教具体解释
...全文
217 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
wss_scaler 2009-08-26
  • 打赏
  • 举报
回复
谢谢16F的兄弟,受教了!
bigbug9002 2009-08-25
  • 打赏
  • 举报
回复
如果你的代码是忽略大小写比较字符串,第三个if是多余的,就是转成小写后比较的那个。
fiwiner 2009-08-25
  • 打赏
  • 举报
回复
单纯地回答你的问题吧,我觉得不会啊。大小写一一对应,转换成大写或小写来比较结果应该是一样的
wss_scaler 2009-08-25
  • 打赏
  • 举报
回复
我的意思是说是否第二个if没有必要?
bigbug9002 2009-08-25
  • 打赏
  • 举报
回复
public int compare(String s, String s1) {
String ss1=s.toUpperCase();
String ss2=s1.toUpperCase() ;
return ss1.compareTo(ss2);
}


简单点就完了.
bigbug9002 2009-08-25
  • 打赏
  • 举报
回复
忽略大小写比较大小?
java1109 2009-08-25
  • 打赏
  • 举报
回复
楼主注释是不是放错地方了
没看到有比较的语句啊
myhonor 2009-08-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 skyzxl 的回复:]
引用 8 楼 yanliang_xt 的回复:
比较两个字符串是否相等。
先每个字符进行比较:
忽略大小写,如果有一个字符不相等,显然整个字符串就不相等了,返回这个字符之差。

如果每个字符都进行了比较,都相等的话就比较字符串的长度,长度相等就相等。

同意
[/Quote]
严重同意
haojia0716 2009-08-25
  • 打赏
  • 举报
回复
这段代码在String里的内部类CaseInsensitiveComparator里面
是忽略字符大小写的比较
wss_scaler 2009-08-25
  • 打赏
  • 举报
回复
我不敢怀疑源码的正确性,不明白的是比较了大写还用比较小写吗?
haojia0716 2009-08-25
  • 打赏
  • 举报
回复
再加上最后一句 return i-j; 而不是return 0;
三重保险
knightzhuwei 2009-08-25
  • 打赏
  • 举报
回复
关键就在于 Georgian alphabet
这个什么乔治字母表 转换为大写比较对它不管用。。
haojia0716 2009-08-25
  • 打赏
  • 举报
回复
先比较大写 再比较小写 双重保险嘛
写程序要考虑到不怕一万就怕万一
24K純帥 2009-08-25
  • 打赏
  • 举报
回复
up
knightzhuwei 2009-08-25
  • 打赏
  • 举报
回复
这原来是源码。。有眼不识泰山 惭愧惭愧
lxxzhy 2009-08-25
  • 打赏
  • 举报
回复
jdk 6 源码中看到这几行注释:

// Unfortunately, conversion to uppercase does not work properly
// for the Georgian alphabet, which has strange rules about case
// conversion. So we need to make one last check before
// exiting.
skyzxl 2009-08-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yanliang_xt 的回复:]
比较两个字符串是否相等。
先每个字符进行比较:
忽略大小写,如果有一个字符不相等,显然整个字符串就不相等了,返回这个字符之差。

如果每个字符都进行了比较,都相等的话就比较字符串的长度,长度相等就相等。
[/Quote]
同意
luorikanxiyang 2009-08-25
  • 打赏
  • 举报
回复
忽略大小写,你应该多看看,查找下
liulu525800 2009-08-25
  • 打赏
  • 举报
回复
比较大写和比较小写的结果一样的啊!
lxjobmail 2009-08-25
  • 打赏
  • 举报
回复
忽略大小写,比较一次就够了
加载更多回复(2)

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧