java – 为什么String.endsWith和String.startWith不一致?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 为什么String.endsWith和String.startWith不一致?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1528字,纯文字阅读大概需要3分钟。
内容图文
![java – 为什么String.endsWith和String.startWith不一致?](/upload/InfoBanner/zyjiaocheng/762/c2c2935cc2934e64ac976085304d2ea5.jpg)
参见英文答案 > lower case of turkish character dotted i 1个
我有以下测试用例,只有第一个断言通过.为什么?
@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");
解决方法:
这是因为小写?(“拉丁大写字母
我在英文语言环境中使用上面的点数转换成两个字符:“拉丁小写字母i”和“组合点上方”.
这解释了为什么它从i开始,但不以i结束(它以结合变音符号结束).
在土耳其语语言环境中,小写字母?根据土耳其语言学规则简单地变成“拉丁语小写字母i”,因此您的代码将起作用.
这是一个测试程序,以帮助弄清楚发生了什么:
class Test {
public static void main(String[] args) {
char[] foo = args[0].toLowerCase().toCharArray();
System.out.print("Lowercase " + args[0] + " has " + foo.length + " chars: ");
for(int i=0; i<foo.length; i++) System.out.print("0x" + Integer.toString((int)foo[i], 16) + " ");
System.out.println();
}
}
这是我们在配置为英语的系统上运行它时得到的结果:
$LC_ALL=en_US.utf8 java Test "?"
Lowercase ? has 2 chars: 0x69 0x307
以下是我们在为土耳其语配置的系统上运行时获得的内容:
$LC_ALL=tr_TR.utf8 java Test "?"
Lowercase ? has 1 chars: 0x69
这甚至是07 doc的API文档使用的特定示例,这是您可以用来获取特定区域设置中的小写版本而不是系统默认区域设置的方法.
内容总结
以上是互联网集市为您收集整理的java – 为什么String.endsWith和String.startWith不一致?全部内容,希望文章能够帮你解决java – 为什么String.endsWith和String.startWith不一致?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。