问题
我编写了一个比较两个字符串的Java程序:
String s1='Hello ';
String s2='hello ';
if(S1.equals ) S2 ) }
system.out.println('Hai );
} else {
system.out.println(welcome );
}
将显示“欢迎”。 我知道区分大小写。 但是,我的问题是想比较两个不区分大小写的字符串。 也就是说,我打算和海伊输出。
#1人气回答(152赞不绝口) ) ) ) ) ) ) ) ) )
最好是使用s1.equalsignorecase(s2 ) : (见javadoc )
也可以将它们转换为大小写并使用s1.equals(s2 )
#2人气回答(40赞词) ) ) ) ) ) ) ) 0
useString.equalsIgnoreCase (
#3人气回答(20赞词) ) ) ) ) ) ) ) ) )
String.equalsIgnoreCase是天真不区分大小写的字符串比较最实用的选择。
但是,由于此方法既不完全缩小大小写也不分解大小写,因此无法执行Unicode标准中指定的大小写匹配。 *实际上,JDK API不提供对案例折叠字符数据的信息访问,因此建议您委托经过测试和测试的第三方库执行此操作。
该库是ICU,提供了用于比较不区分大小写的字符串的实用程序。
import com.IBM.ICU.text.normalizer 2;
//.
publicstaticbooleanequalsignorecase (char sequences,CharSequence t ) {
normalizer2normalizer=normalizer2. getnfkccasefoldinstance (;
returnnormalizer.normalize(s ).equals (normalizer.normalize ) t );
}
String brook='uu0308chen ';
String BROOK='FLSSCHEN ';
评估服务质量指示符(brook,brook );
如果在String.equalsIgnoreCase或String.equals与上层或下层字符串进行天真比较,这一简单测试也将失败。
(预定义的情况折叠flavourgetNFKCCasefoldInstance与区域设置无关; 土耳其语区域设置需要与UCharacter.foldCase相关的更多工作。 )