社区
Java SE
帖子详情
关于ASCII码转换,一个简单而又复杂的问题
njallenwang
2006-10-20 10:22:17
String ss1 = "aa\58bb"
希望经过转换为
String ss2 = "aa:bb"
搜索'\'和'\\'是没有用的,怎么办呢??
...全文
317
11
打赏
收藏
关于ASCII码转换,一个简单而又复杂的问题
String ss1 = "aa\58bb" 希望经过转换为 String ss2 = "aa:bb" 搜索'\'和'\\'是没有用的,怎么办呢??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
njallenwang
2006-10-30
打赏
举报
回复
好使,非常感谢gzpoplar!
gzpoplar
2006-10-20
打赏
举报
回复
注意这里:
String src = "aa\\58bb234\\40\\47aaa";
^^ ^^ ^^
原字符串里面的\必须再加上一个\,否则就成转意符了。
gzpoplar
2006-10-20
打赏
举报
回复
try {
String strpattern = "\\\\([0-9]{1,3})";
String src = "aa\\58bb234\\40\\47aaa";
String desc = "";
Pattern p = Pattern.compile(strpattern);
String[] ss = p.split(src);
int num = ss.length;
String[] asc = new String[num];
Matcher m = p.matcher(src);
int i = 1;
while(m.find()) {
asc[i] = dec2asc(m.group(1));
i++;
}
for (i=0; i<num; i++) {
if (i==0) {
desc += ss[i];
} else {
desc += asc[i] + ss[i];
}
}
System.out.println("'" + src + "'");
System.out.println("'" + desc + "'");
}
catch(Exception exception)
{
exception.printStackTrace();
}
static String dec2asc(String dec) {
String result = "";
try {
int d = Integer.parseInt(dec);
char c = (char)(d & 255);
result += c;
}
catch(Exception ex)
{
ex.printStackTrace();
}
return result;
}
gzpoplar
2006-10-20
打赏
举报
回复
晕啊,那你上面没有说啊!
关键是什么换成什么?
明白了,等一会儿
njallenwang
2006-10-20
打赏
举报
回复
楼上的这个不错,不过还没达到我的目的,
我举\58只是一个例子,还有其他ASCII码,我的要求是
src = "aa\58bb\44cc"
转化为:
dest = "aa:58,cc"
gzpoplar
2006-10-20
打赏
举报
回复
String src = "aa\58bb2345seiljlvc#*(&)sjkdlf;a*(&)#dfae8932";
String desc = src.replaceAll("[^a-zA-Z]+", ":");
System.out.println("'" + src + "'");
System.out.println("'" + desc + "'");
hhl417
2006-10-20
打赏
举报
回复
\ 是转义字符,你当然搜索不到了,你上面的字符 \和5连才有意义,搜"\5",就可以搜索得到,至于转换,楼上的方法就可以了
jspxnet
2006-10-20
打赏
举报
回复
如果你只是替换的话
String ss1 = "aa\58bb";
System.out.println(ss1.replace("\58",":"));
gzpoplar
2006-10-20
打赏
举报
回复
public static void main(String[] args) {
try {
String strpattern = "\\\\([0-9]{1,3})";
String src = "aa\\58bb234\\40\\47aaa";
byte[] cs = src.getBytes(); //这里跟你拿到的串一样
src = "";
for (int i=0; i<cs.length; i++) {
if (cs[i] == '\\') {
src += "\\";
} else {
src += (char)cs[i];
}
}
String desc = "";
Pattern p = Pattern.compile(strpattern);
String[] ss = p.split(src);
int num = ss.length;
String[] asc = new String[num];
Matcher m = p.matcher(src);
int i = 1;
while(m.find()) {
asc[i] = dec2asc(m.group(1));
i++;
}
for (i=0; i<num; i++) {
if (i==0) {
desc += ss[i];
} else {
desc += asc[i] + ss[i];
}
}
System.out.println("'" + src + "'");
System.out.println("'" + desc + "'");
}
catch(Exception exception)
{
exception.printStackTrace();
}
}
static String dec2asc(String dec) {
String result = "";
try {
int d = Integer.parseInt(dec);
char c = (char)(d & 255);
result += c;
}
catch(Exception ex)
{
ex.printStackTrace();
}
return result;
}
}
如何?
gzpoplar
2006-10-20
打赏
举报
回复
那你就不要用String,char[]或int[]
可以用循环转成String,然后用上面的方法转换
或者直接在char或int数组循环取出相应的ascii数值,直接转换,见上面的dec2asc程序。
njallenwang
2006-10-20
打赏
举报
回复
多谢poplar兄,
可是我现在的情况是从设备上取回的信息就是
String src = "aa\58bb234\40\47aaa";
郁闷啊
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章