//写一个函数,2个参数,1个字符串,1个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码
//如("我 ABC",4) 应该截取为"我 AB",输入("我 ABC 汉 DEF",6)应该输出"我 ABC"而不是"我 ABC+汉的半个"
public class E {
public static String subString(String str,int subBytes)
{
int bytes = 0;//用来存储字符串的总字节数
for(int i=0;i<str.length();i++)
{
if(bytes==subBytes)
{
return str.substring(0,i);
}
char c = str.charAt(i);
if(c<256){
bytes +=i;//英文字符的字节数看作1
}else{
bytes +=2;//中文字符的字节数看作2
if(bytes-subBytes==1){
return str.substring(0,i);
}
}
}
return str;
}
public static void main(String[] args) {
System.out.println(subString("我 ABC 汉 DEF",6));//运行结果是我 ABC 汉 DEF 而不是我 ABC
System.out.println(subString("我 ABC 汉 DEF",2));//运行结果是我
System.out.println(subString("我 ABC 汉 DEF",2));//运行结果还是我 ABC 汉 DEF 而不是我 AB }
//如("我 ABC",4) 应该截取为"我 AB",输入("我 ABC 汉 DEF",6)应该输出"我 ABC"而不是"我 ABC+汉的半个"
public class E {
public static String subString(String str,int subBytes)
{
int bytes = 0;//用来存储字符串的总字节数
for(int i=0;i<str.length();i++)
{
if(bytes==subBytes)
{
return str.substring(0,i);
}
char c = str.charAt(i);
if(c<256){
bytes +=i;//英文字符的字节数看作1
}else{
bytes +=2;//中文字符的字节数看作2
if(bytes-subBytes==1){
return str.substring(0,i);
}
}
}
return str;
}
public static void main(String[] args) {
System.out.println(subString("我 ABC 汉 DEF",6));//运行结果是我 ABC 汉 DEF 而不是我 ABC
System.out.println(subString("我 ABC 汉 DEF",2));//运行结果是我
System.out.println(subString("我 ABC 汉 DEF",2));//运行结果还是我 ABC 汉 DEF 而不是我 AB }
解决方案 »
- JAVA中怎么把我的数据流关上!
- 需要为 class、interface 或 enum ..问题!!!!
- 一份日记工具软件源代码下载。
- Struts动态form如何实现!!!!!
- 求高手帮忙加事件 100分 100分
- 再次讨论struts中数据集合提交问题
- struts中action类的线程安全问题
- 如何知道本机的红外线接口被模拟成第几个COM口!!!???
- System.in.println( " You can press return to quit\n" );什么意思?
- 那里有jbuilder的书籍
- hpunix下发布WEB程序报JSP错误
- 本人初学JAVA,有个编译时遇到的小问题想请教
如果要实现这种功能的话,String的substring就可以啊,干嘛要自己写?
不明白