我想把一段连续的字母替换成每个字母后接一个空格,replaceAll的参数怎么写?

解决方案 »

  1.   

    s.replaceAll("([a-zA-Z])", "$1 ")
      

  2.   

    感觉简单的一问,把我难住了,如果直接用replaceAll,第二个参数,应该是一个已知的常串,而
    之前如果不做处理,那么用replaceAll感觉应该是实现不了~~
      

  3.   

    还真行呀,没这么用过。。
    挺高兴,又学了一招~~
    能不能解释一下,为什么可以直接这么用??
    看JDK的文档,那个应该是常量呀
      

  4.   

      明白了~~
        
        在JDK中还有如下解释:
        "方法调用的 str.replaceAll(regex, repl) 形式产生与以下表达式完全相同的结果: 
        Pattern.compile(regex).matcher(str).replaceAll(repl);"
        
        而对于 matcher(str).replaceAll(repl);中的replaceAll方法又有如下的解释:
        "注意,在替换字符串中使用反斜线 (\) 和美元符号 ($) 可能导致与作为字面值替换字符串时所产生的结果不同。
        美元符号可视为到如上所述已捕获子序列的引用,反斜线可用于转义替换字符串中的字面值字符。"
      

  5.   


    常量??这个参数名都叫regex了,本意当然就是让你放正则表达式的。
      

  6.   

    你看一下,那是第一个参数叫regex,第二个参数是你要替换的值参数叫replacement~~~
      

  7.   

    哈哈,我以前也只知道Matcher.appendReplacement(StringBuffer sb, String replacement)的第二个参数可以用美圆来捕获组,原来replaceAll也可以.
      

  8.   

    第一组匹配的内容.#1给出的正则是([a-zA-Z]),第一组的意思就是第一对括号里面的匹配的内容.其实,这样也可以s.replaceAll("[a-zA-Z]", "$0 "),$0表示整个正则匹配的内容