关于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; }}如何? 按照要求,求设计验证 IP 的思路 如何 让JTable的选择模式只能选择单元格 菜鸟提问 几个关于 java 多态性的问题 关于java.lang.reflect.Field 和 java.lang.reflect.Method 的问题 如何把String[] str={...}清空 hash如何存储CLOB对象 请问:怎么把c中的枚举类型 和struct类型 转成java JDBC的问题 用那个类能载入ICON各式的图像?ImageIcon不行啊! 请各位大虾出手相助! 初学者的问题 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;
}
}
如何?