package test_try;public class tsstring {
public static void main(String args[]){
String rose = "888 2009/10/02";
// String copyrose = rose.replace(" ", "*");
// String copyrose1 = rose.replace(" ", "*");
                String copyrose = rose.replace("", "*");
String copyrose1 = rose.replace("", "*");
for(int i = 0; i < copyrose1.length(); i++){
System.out.print("__"+copyrose1.charAt(i)+"__");
}
System.out.println();

}
}为什么我的program不能888 2009/10/02第三个" "变成*

解决方案 »

  1.   


    package test_try;public class tsstring {
        public static void main(String args[]){
            String rose = "888 2009/10/02";
    //        String copyrose = rose.replace(" ", "*");
    //        String copyrose1 = rose.replace(" ", "*");
                    String copyrose = rose.replace("", "*");
            String copyrose1 = rose.replace("", "*");
            for(int i = 0; i < copyrose1.length(); i++){
                System.out.print("__"+copyrose1.charAt(i)+"__");
            }
            System.out.println();
                    
        }
    }
    但在这好像rose得元素
    哪元素和空字串
    混啦!
      

  2.   

    哪String rose = "888 2009/10/02";包含很多""表示空字串啊,零字符
      

  3.   

    String rose = "888 2009/10/02";
    String copyrose1 = rose.replace(" ", "*"); //' '(空格对应的unicode的编码值是32)找哪个32 之后替换为'*'对应的unicode编码值
    System.out.println(copyrose1);run:888*2009/10/02
      

  4.   

    "" 和" "是有区别的,""没有任何字符,而" "则有个空格符号.你用""去匹配rose中的" "肯定不能找到.
      

  5.   

    String copyrose1 = rose.replace("\s", "*"); 
    String copyrose1 = rose.replace("\\s", "*"); 
    这两个试试,replace方法的第一个参数是正则表达式
      

  6.   

    你应该这样写
    package test_try;public class tsstring {
        public static void main(String args[]){
            String rose = "888 2009/10/02";
          String copyrose = rose.replace(" ", "*");
                   System.out.println(copyrose);
                    
        }
    }
    输出结果: 888*2009/10/02
      

  7.   

    你应该这样写 
    package test_try; public class tsstring { 
        public static void main(String args[]){ 
            String rose = "888 2009/10/02"; 
          String copyrose = rose.replace(" ", "*"); 
                  System.out.println(copyrose); 
                    
        } 

    输出结果: 888*2009/10/02 
      

  8.   

    String copyrose = rose.replace(" ", "*"); 
      

  9.   

    从java源码给你分析一下:
    public String replace(CharSequence target, CharSequence replacement) {
            return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
                this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
        }
    public String replaceAll(String regex, String replacement) {
    return Pattern.compile(regex).matcher(this).replaceAll(replacement);
        }
    而System.out.println("".matches("888 2009/10/02"));打印false
    所以实际上不执行替代