System.out.println("***************************");
String d1="abcd";
String d2;
char m='\16';
d2=d1.replace('a',m);
System.out.println("d2="+d2);
d2=d1.replace('b',m);
System.out.println("d2="+d2);
d2=d1.replace('c',m);
System.out.println("d2="+d2);
System.out.println("***************************");打印结果为
请问:
为什么替换'c'的时候 小音乐符号出不来 而且我发现出不出来 好像没有什么规律可言另:
新手正在初学JAVA 上周看了一周JAVA培训视频 这种方式好吗
byte []b = {0100}; //八进制表示法
System.out.println(new String(b));
现在需要解决的是打印的问题啊 赋值没问题
用你的代码 System.out.println("\16");
byte []b = {0141,0142,0016,0144}; //八进制表示法
System.out.println(new String(b));
打印出来 还是音乐符变方块了
return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
} public String replaceAll(String replacement) {
reset();
boolean result = find();
if (result) {
StringBuffer sb = new StringBuffer();
do {
appendReplacement(sb, replacement);
result = find();
} while (result);
appendTail(sb);
return sb.toString();
}
return text.toString();
} public static String quoteReplacement(String s) {
if ((s.indexOf('\\') == -1) && (s.indexOf('$') == -1))
return s;
StringBuffer sb = new StringBuffer();
for (int i=0; i<s.length(); i++) {
char c = s.charAt(i);
if (c == '\\') {
sb.append('\\'); sb.append('\\');
} else if (c == '$') {
sb.append('\\'); sb.append('$');
} else {
sb.append(c);
}
}
return sb.toString();
}
看源码实现就明白了吧。
public class StringTest
{
public static void main(String[] args)
{
String str = "Helloc";
String s1 = str.replace('o', 'b');
String s2 = str.replace('c', '\16');
System.out.println(s1);
System.out.println(s2);
String s2 = str.replace('h', 'd');
System.out.println(s2);
}
}
在第二个s2的地方是报错的,如果你把后面的两个d2分别改为d3和d4,我想应该就不会有问题,具体为什么,你应该懂吧?
.....大哥 你把第二个 "String s2" 改成 "s2" 就不会报错了好吧
不是赋值 不是REPLACE,
我调试看了内存 赋值没问题 就是打印的时候出的问题 打印的时候,如果char[]为:
'a','\b','c','d' ; 第二个字母显示出来就是音乐符
'a','b','\b','d' ; 第三个字母下试出来就是小方块
在cmd控制台下都可以显示出来.
问题是替abcd
替a 替b都没问题 为啥替了c 打印就有问题呢
我仔细看了replace的过程 都成功了 关键是打印