【发布时间】:2017-08-04 20:21:56
【问题描述】:
我有以下测试用例,只有第一个断言通过。为什么?
@Test
public void test() {
String i1 = "i";
String i2 = "İ".toLowerCase();
System.out.println((int)i1.charAt(0)); // 105
System.out.println((int)i2.charAt(0)); // 105
assertTrue(i2.startsWith(i1));
assertTrue(i2.endsWith(i1));
assertTrue(i1.endsWith(i2));
assertTrue(i1.startsWith(i2));
}
回复后更新
我正在尝试以不区分大小写的方式使用 startsWith 和 endsWith,这样,下面的表达式应该返回 true。
"ALİ".toLowerCase().endsWith("i");
【问题讨论】:
-
你能不能改变你的问题,这样你就不用
toLowerCase()了?toLowerCase()输出的字符是什么? -
请查看我的更新
printlns -
现在尝试打印
i1.length()和i2.length()。 -
OK 长度不同 :) 我再次更新了我的问题。
-
toLowerCase不接受字符串作为参数,也不返回布尔值,因此无法计算为真。
标签: java string character-encoding locale