关于ASCII码转换,一个简单而又复杂的问题 String ss1 = "aa\58bb"希望经过转换为String ss2 = "aa:bb"搜索'\'和'\\'是没有用的,怎么办呢?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你只是替换的话 String ss1 = "aa\58bb"; System.out.println(ss1.replace("\58",":")); String src = "aa\58bb2345seiljlvc#*(&)sjkdlf;a*(&)#dfae8932"; String desc = src.replaceAll("[^a-zA-Z]+", ":"); System.out.println("'" + src + "'"); System.out.println("'" + desc + "'"); 楼上的这个不错,不过还没达到我的目的,我举\58只是一个例子,还有其他ASCII码,我的要求是src = "aa\58bb\44cc"转化为:dest = "aa:58,cc" 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; } 注意这里:String src = "aa\\58bb234\\40\\47aaa"; ^^ ^^ ^^ 原字符串里面的\必须再加上一个\,否则就成转意符了。 多谢poplar兄,可是我现在的情况是从设备上取回的信息就是String src = "aa\58bb234\40\47aaa";郁闷啊 那你就不要用String,char[]或int[]可以用循环转成String,然后用上面的方法转换或者直接在char或int数组循环取出相应的ascii数值,直接转换,见上面的dec2asc程序。 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; }}如何? java可以制作网页吗? 线程问题 DOM4J 怎么从当前的NODE获得属性? 如何理解里氏代换原则,我一向来认为有子类的地方,可以用父类代替。 想要做一个网站。该怎么写它的前期文档?是按照学校学的那样写么? 定义泛型集合 关于类的创建问题 Vector() 删除元素碰到的问题 请问哪里有 《JAVA核心技术--基础知识》的电子书下载,谢谢! 设计问题请大家讨论一下,对于这种数据源,分页显示中是将结果保存在内存中呢,还是每页查一次好? 初学者的问题 Eclipse 运行不了阿
System.out.println(ss1.replace("\58",":"));
String desc = src.replaceAll("[^a-zA-Z]+", ":"); System.out.println("'" + src + "'");
System.out.println("'" + desc + "'");
我举\58只是一个例子,还有其他ASCII码,我的要求是src = "aa\58bb\44cc"
转化为:
dest = "aa:58,cc"
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;
}
String src = "aa\\58bb234\\40\\47aaa";
^^ ^^ ^^
原字符串里面的\必须再加上一个\,否则就成转意符了。
可是我现在的情况是从设备上取回的信息就是
String src = "aa\58bb234\40\47aaa";郁闷啊
可以用循环转成String,然后用上面的方法转换
或者直接在char或int数组循环取出相应的ascii数值,直接转换,见上面的dec2asc程序。
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;
}
}
如何?