编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节数截取的字符串,介理要保证汉字不被截半个,如"我ABC" 4,应该截为"我AB",输入为"我ABC汉DEF" 6,应该输出为"我ABC",而不是"我ABC+汉的半个";
解决方案 »
- 关于运用Jconsole监控JVM内存连接到远程linux
- 一个正则表达式
- 急求:如何验证用户输入的条件表达式是否合法?
- hash map 的使用问题,大家帮帮忙~~谢啦
- 请问高手netbeans中的这个控件是怎么实现的!
- Java初级问题续~~~~~~~~~
- 大家好,我是JAVA的初学者,以前用ASP,对XML没多少概念,能否推荐点学习XML的资料。
- RMI Server能够同时接受的连接数有限制么?
- 初学者请教vssver.scc问题
- 输入类名,怎样得到这个类的一个实例? 不要返回Object的, 要调用这个类的一个方法,用反射太慢了,保证该方法存在
- 刚开始学JAVA,请大家指点
- paint()和paintComponent()有什么区别?
byte[] bytes = str.getBytes("GBK");
然后把bytes数组进行分割,假如第i到第j个(不包括第j个)为一段
String sSec = new String(bytes, i, j-i, "GBK");分割时注意,汉字的高字节为负数,其他均为正数,根据这个特点进行分割,就不会把汉字分成两个字节
据我所知,java用的unicode,英语字母和汉字的长度是一样的,都是两个字节,难道在字符串里面又不是了?
如果使用GB2313的话一个汉字会是2个字节,
而使用UTF-8的话,将不会是2个字节。如果有其他语言的文字的话,更麻烦。
if (word.getBytes().length <= n) {
return word;
}
if (word.getBytes()[n] < 0) {
for (int i = word.length(); i > 0; i--) {
String tempWord = word.substring(0, i);
if (word.substring(0, i).getBytes().length <= n) {
return tempWord;
}
}
}
return "";
}
public static String getWord(String word, int n) {
if (word.getBytes().length <= n) {
return word;
}
for (int i = word.length(); i > 0; i--) {
String tempWord = word.substring(0, i);
if (word.substring(0, i).getBytes().length <= n) {
return tempWord;
}
}
return "";
}
if(length >= str.getBytes().length)
return str;
int x = 0;
int y = 0;
for(int i=0;i<length;i++){
if(str.charAt(i)>255)
x += 2;
else
x += 1;
y += 1;
if(x == length){
return (str.substring(0, y));
}
if(x > length){
return (str.substring(0, y - 1));
}
}
return "";
}
class Length{
public static void main(String[] args){
String s="我ABC汉DEF";
String str1=s.substring(0,1);
String str2=s.substring(1,4);
String str3=s.substring(4,5);
String str4=s.substring(5,8);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
}
}这样写就可以正确输出想要的结果咯!!!
楼主赶快给分吧,谢谢了!!