for(int i=0;str[i]!='\0';i++)
if(str[i]<0)
{System.out.println(str[i]+str[i+1]);
i++;
}
汉字就是由2个负数(每个数一个字节)组成的
if(str[i]<0)
{System.out.println(str[i]+str[i+1]);
i++;
}
汉字就是由2个负数(每个数一个字节)组成的
解决方案 »
- 如何定义一个baseAction让很多action都需要用到session
- 发现一个诡异事件,请高手帮帮忙
- 不懂
- 我是jsp新手,碰到连接数据库的难题了,望老鸟不吝赐教!
- 如何从JSP页面里面把需要的参数传到servlet里面
- 数据的查询问题,大家讨论一下,到底怎样才合适
- 图片大小问题,急!!!!!
- 高手!Help me, 谁有一个注销Session的代码(在线等候)
- a simple question, need help, thanks
- 如何利用javabean实现小型投票系统
- 邮箱的全选,删除是怎么做的啊?
- 怎样用jsp,在用户注册的时候记录客户端的MAC地址?????????各位高手请帮帮忙!!!!!!!!!
String str1 = "我的编号是123-44(男)";
String str2 = "123我的编号是123-44(男)";
System.out.println(str1 + " 中的中文文字为:" + getChineseCharacter(str1));
System.out.println(str2 + " 中的中文文字为:" + getChineseCharacter(str2));
}
public static String getChineseCharacter(String str) throws Exception{
StringBuffer outStr = new StringBuffer();
byte[] bytes = str.getBytes("Unicode");
byte[] tmp = new byte[4];
int i = 0;
int len = bytes.length;
tmp[0] = -1;
tmp[1] = -2;
for ( i = 2 ; i <= ( len - 2 ) ; i += 2){
if ( bytes[i+1] != 0 ){
tmp[2] = bytes[i];
tmp[3] = bytes[i+1];
outStr.append(new String(tmp,"Unicode"));
}
}
return outStr.toString();
}
}
以前是学c/c++的,最近才开始学的java,想选择一个网上能现下现用的java编译器
谁能推荐推荐。
public static String getChineseCharacter(String str) throws Exception{
StringBuffer outStr = new StringBuffer();
byte[] bytes = str.getBytes();
byte[] tmp = new byte[2];
int i = 0;
for ( i = 0 ; i < bytes.length; i ++ ){
if ( bytes[i] < 0 ){
tmp[0] = bytes[i];
tmp[1] = bytes[++i];
outStr.append(new String(tmp));
}
}
return outStr.toString();
}另外:ybt631(需要拼命) 回复的把两个字节直接加起来是不行的,为什么的话自己想罗
谢谢你了。
你说的那个-1,-2 是不是你用了tmp[1]=-1 tmp[2]=-2 。而后的复值是用到了tmp[3]timp[4]身上。
输出的可就是tmp了。
我的机器现在每法实验。回家后偶在试试。不过我看可以的。只是对于
StringBuffer outStr = new StringBuffer();
outStr.append(new String(tmp));
我还不懂。合乎。以前没有用过的嘛。
为什么不行??
请注意我的程序:
for(int i=0;str[i]!='\0';i++)
if(str[i]<0)
{System.out.println(str[i]+str[i+1]);
i++;//这个地方
}
防止了相邻2个汉字的头尾相连组成一个不同的汉字。
char[] cs=s.toCharArray();
StringBuffer sb=new StringBuffer();
for(int i=0;i<cs.length;i++){
if(cs[i]<127) continue;
sb.append(csf[i]);
}
s=sb.toString();
现在s就是你想要的字符串了。
ETUFO(诺) 谢谢.你的方法好像也是不显示.
ybt631(需要拼命) 谢谢.下面是我按你的方法做的试验.呵呵.可能方法不对.不过没有显示.我也不知道为什么.你和(诺)我用的输出显示是一样的.是不是那里有问题了.判断是否是中文这个地方是没有问题了.不一样的就是(笑对人生)用的是.append(new String(str))了.
大家帮忙试试是什么问题了.呵呵.
public class text{ public static void main(String[] args) throws Exception{
String str1 = "我的编号是123-44(男)";
String str2 = "123我的编号是123-44(男)";
System.out.println(str1 + " 中的中文文字为:" + getChineseCharacter(str1));
System.out.println(str2 + " 中的中文文字为:" + getChineseCharacter(str2));
}
public static String getChineseCharacter(String st) throws Exception{
StringBuffer br=new StringBuffer();
char[] str=st.toCharArray();
for(int i=0;i<str.length;i++)
if(str[i]<0)
{
br.append(str[i]+str[i+1]);
i++;//这个地方
}
return br.toString();
}
}