问题引导:在Android中,使用TextView来显示文字,如果所有文字都在一行显示时,那么当文字过长的时候,
1:如果不加设置则出现的现象是,显示不全;
2:如果设置android:singline = “true”, 则过长时,会自动将文字的后面较长的部分替换为省略号
问题:如果我们需要在两行来显示文字,那么文字过长的时候怎么办?
想法:既然长了就替换啊,省略号搞起。。
publicstaticvoid main(String[] args) {
String str1 = "c"; // 英文字符 1
String str2 = "1"; // 数字 1
String str3 = "你"; // 汉字 1
String str4 = "c1"; // 组合 2
String str5 = ","; // 英文标点 1
String str6 = ","; // 中文标点 1
System.out.println(str1 + " : " + str1.length());
System.out.println(str2 + " : " + str2.length());
System.out.println(str3 + " : " + str3.length());
System.out.println(str4 + " : " + str4.length());
System.out.println(str5 + " : " + str5.length());
System.out.println(str6 + " : " + str6.length());
String str1 = "c"; // 英文字符 1
String str2 = "1"; // 数字 1
String str3 = "你"; // 汉字 1
String str4 = "c1"; // 组合 2
String str5 = ","; // 英文标点 1
String str6 = ","; // 中文标点 1
System.out.println(str1 + " : " + str1.length());
System.out.println(str2 + " : " + str2.length());
System.out.println(str3 + " : " + str3.length());
System.out.println(str4 + " : " + str4.length());
System.out.println(str5 + " : " + str5.length());
System.out.println(str6 + " : " + str6.length());
}
上面是对各种不同类型的字符类型在Java String中的长度测试,结果是所有的类型当个字符都是1。恩,也就是说string.length的结果就是字符个数,这个与字符类型无关。
好像这是常识?然后问题来了,不同的字符在显示的时候占用的空间完全不同,数字偏小,标点的站位更是乱。我们想要知道某个字符串占用了多少空间,直接使用其总长度来估算是不准确的。此时,需要对字符串中各个字符按照数字,英文字符,汉字,标点类型进行分组。