搂主:在string字串一个中汉字、中文标点只占一位,全角输入的字符或阿拉伯数字也占一位,但将它转化为字节却占两位(即两个字节),如果你想确定你的字符串str是否含有英文(除1、2、3...9、0)以外的编码字符或用全角输入法输入的英文字母和阿拉伯数字,你可用将str字串转化为字节数组(Byte[]),然后比较一下转化前后length的大小;如果buf.length>str.length则说明你的字串可能含有全角输入法输入的字符(包括阿拉伯数字)或中文(包扩中文标点),但不能确定
调试欢乐多
* 字符串定长截断函数。
* @param text 需要截断的字符串
* @param textMaxChar 需要留下的长度
* @author [email protected]
* @return
*/
public String[] CutString(String text, int textMaxChar)
{
int size, index;
String[] returnStringArray = new String[2]; if(textMaxChar <= 0){
returnStringArray[0] = text;
returnStringArray[1] = null;
}
else{
for(size = 0, index = 0; index < text.length() && size < textMaxChar;
index++){
size += text.substring(index, index + 1).getBytes().length;
}
returnStringArray[0] = text.substring(0, index);
returnStringArray[1] = text.substring(index);
} return returnStringArray;
}
也就是一个字符串str,我想得到str.substring(0, 10); 只要不将汉字截成两半就可以了!
附加:能跨平台,在windows、linux7.3、linux9.0上都可以通过
”
不清楚楼主问这个问题的做了多少Java的东西,或者说对Java掌握多少。
在JAVA中
String是如何定义的?
Char是如何定义的?
所有这些天生就是UNICODE的,怎么会出现汉字被截成两半的现象?
况且,你仅仅是用一个substring方法而以。。如果谁用这个方法能够做到将汉字截成两半,那才是当真的了不起了
substring方法是不会把汉字截成两半的,因为java用的是UNICODE
在java 中用的是UNICODE汉字和字母是一样的
class a{
public static void main(String[] args)[
String n="我和ni";
String m=n.substring(0,3);
System.out.println("m == "+ m);
}
}
结果为m == 我和n;
java的优点就是跨平台,这点不用超心
你们所讲的方法包括Str.getBytes(),这些我都试过了,不行,在window2k和linux7.3下来出来的结果是不一样的
包括所说的str.substring(),也是会出现乱码的,就是最后一个字符可能会出现乱码=======================我想这应该和系统默认的编码方式有关:
ngqzmjmj(冷酷) 应该是在window上面运行的
dyroro(粗线条) java默认的应该是iso8859-1,如果系统是redhat9.0,可能你的程序会出问题
niko7(掠水无痕) 在不同的平台下String.getBytes().length出来的结果是完全不一样的
我现在做的就是在windows下开发
但运行是在Unix下,完全没有问题,substring()这种函数都有用到
请您用locale在您的unix上看一下你的默认编码是iso885915还是gb13030再问一下,你的windows和Unix下的字符截取结果一样吧吗??