编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字

编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF... 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。 展开
 我来答
寒月灰色头像
2011-11-01
知道答主
回答量:9
采纳率:0%
帮助的人:13.3万
展开全部
public static boolean isLetter(char c){
int k=0X80;
return c/k==0?true:false;

}

public static int lengths(String strSrc){
if (strSrc==null){
return 0;
}
int len=0;
char[] strChar=strSrc.toCharArray();
for (int i=0;i<strChar.length;i++){
len++;
if (!isLetter(strChar[i])) len++;
}
return len;
}

public static String subString(String origin,int len){
if (origin==null || origin.equals("")|| len<1){
return "";
}
if (len>lengths(origin)){
return origin;
}
byte[] strByte=new byte[len];
System.arraycopy(origin.getBytes(),0,strByte,0,len);
int count=0;
for (int i=0;i<len;i++){
int value=(int)strByte[i];
if (value<0) count++;
}
if (count % 2 !=0){
len=(len==1)?++len:--len;
}
return new String(strByte,0,len);

}

public static void main(String[] args) {
System.out.println(""+ subString("我ABC汉DEF",6));

}
zhjiemm
2011-10-28 · TA获得超过2643个赞
知道大有可为答主
回答量:1834
采纳率:75%
帮助的人:710万
展开全部
void get_string(char *s,int n)
{
int i,t=0;
for (i=0;i<n ;i++)
{
if(s[n]&0x80) t++;
}
if(t%2)n--;
s[n] = 0;
printf("%s",s);
}
追问
呃 ,抱歉。这个要用java实现的。。还是谢谢您啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
returnsr
2011-10-28 · TA获得超过296个赞
知道小有建树答主
回答量:271
采纳率:0%
帮助的人:164万
展开全部
#include <stdio.h>
#include <string.h>
#include <malloc.h>
char *GetSubString(char *res, int size)
{
int i, j;
int len = strlen(res);

// char *des = new char[len+1];
char *des = (char*) malloc(len+1);
/* if (size > len)
{
size = len;
}
else if (size<0)
{
size = 0;
} */
for (i=0, j=0; i<size; i++, j++)
{
/*汉字是使用两个字节来存放的,如果高位字节的最高位为1那么就是汉字了*/
/*也可以用 res[i]<0 作为条件*/
if( (~(res[i]>>8)) == 0 )
{
size+=1;
des[j] = res[i];
j++;
i++;

}
des[j] = res[i];

}
des[j]=0;
return des;
}

void main()
{

char str[256] = "彼bi岸an花开huakai";
char *p = GetSubString(str, 6);
printf("%s\n", p);
// delete[] p;
free(p);

}
追问
呃 ,抱歉。这个要用java实现的。。还是谢谢您啊
追答
class  GetSubString
{

public static void getsubstring(char res[], char des[], int size)
{
int i;
for (i=0; i<size; i++)
{
des[i] = res[i];
}
}
/* public static void getsubstring(char res[], int size)
{
// res.length = size;
} */
public static void main(String[] args)
{

/* 在java中任何一个数组都有一个length属性并且是final
也就是说不能改变length的值,所以就没有字符串的结束
标志,因此是无法对字符串进行截断[用char定义的字符串]
下边提供两种方法均可, 如果谁研究出了解决方案请致邮件
到316261656@qq.com */

// 1
/*
String str = "彼bi岸an花hua开kai";
String temp = str.substring(0, 6);
// result: 彼bi岸an
System.out.println(temp); */

// 2
String s = "彼bi岸an花hua开kai";
char[] str = s.toCharArray();
char[] temp = new char[128];
// result: 彼bi岸an
getsubstring(str, temp, 6);
System.out.println(temp);

/* String s = "彼bi岸an花hua开kai";
char[] str = s.toCharArray();
getsubstring(str,6);
System.out.println(str); */
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liangxguo
2011-10-28
知道答主
回答量:19
采纳率:0%
帮助的人:15.6万
展开全部
谢谢,学习中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式