读书人

关于中文字符的有关问题(基础)

发布时间: 2012-02-21 16:26:23 作者: rapoo

关于中文字符的问题(基础)
网上看到一个题目
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”

但是给出的答案好象不对

package test;

class SplitString {
String SplitStr;
int SplitByte;
public SplitString(String str, int bytes) {
SplitStr = str;
SplitByte = bytes;
System.out.println( "The String is: ' " + SplitStr + " ';SplitBytes= " +
SplitByte);
}

public void SplitIt() {
int loopCount;

loopCount = (SplitStr.length() % SplitByte == 0) ?
(SplitStr.length() / SplitByte) :
(SplitStr.length() / SplitByte + 1);
System.out.println( "Will Split into " + loopCount);
for (int i = 1; i <= loopCount; i++) {
if (i == loopCount) {

System.out.println(SplitStr.substring((i - 1) * SplitByte,
SplitStr.length()));
} else {

System.out.println(SplitStr.substring((i - 1) * SplitByte,
(i * SplitByte)));
}
}
}

public static void main(String[] args) {
SplitString ss = new SplitString( "test中dd文dsaf中男大3443n中国43中国人0ewldfls = 103 ",4);


ss.SplitIt();
}
}
答案好象只是进行了分组,适用于64为电脑。并没有解决把中文字符拆成2个字符处理的问题。有给出正确的答案。

[解决办法]
在Java中,汉字也好,字母也好,都是作为Unicode来处理,而且长度都为1。所以直接取字符串的话是不会出现半个汉字的问题的。

读书人网 >J2SE开发

热点推荐