String a ="i am a boy";
String[] b =a.split("\\s+");
StringBuffer sb =new StringBuffer();
for (int i=0;i<b.length;i++){
  sb.append(String.valueOf(b[i].charAt(0)).toUpperCase()+b[i].substring(1)+" ");
}
System.out.println(sb);为什么底下这个不行,希望有人指点 
  System.out.println(sa.replaceAll("\\b(\\w)","$1qq".toUpperCase()));

解决方案 »

  1.   

    apache commons-lang
    WordUtils.capitalize(str) 
    WordUtils.capitalizeFully("fOO BAr"); // Foo Bar
      

  2.   

    import java.util.stream.*;
    import java.util.*;public class Capitalize {
        public static void main(String[] args) {
            System.out.println(Arrays.stream("foo bar".split("\\s+")).map(Capitalize::capitalize).collect(Collectors.joining(" ")));
            System.out.println(Arrays.stream("fOO BAR".split("\\s+")).map(Capitalize::capitalizeFully).collect(Collectors.joining(" ")));
        }
        public static String capitalize(String input){
            return Character.toUpperCase(input.charAt(0)) + input.substring(1);
        }
        public static String capitalizeFully(String input){
            return Character.toUpperCase(input.charAt(0)) + input.substring(1).toLowerCase();
        }
    }
      

  3.   


    很想知道2楼主那个问题的答案
    StringBuffer buf = new StringBuffer();
    String str = "im a big"; Pattern p = Pattern.compile("\\b\\w");
    Matcher m = p.matcher(str);

    while (m.find()) {
    m.appendReplacement(buf, m.group().toUpperCase());
    }
    m.appendTail(buf);
    System.out.println(buf);
      

  4.   

    package csdn.examples;import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Capitalize
    {
        private static final Pattern pattern = Pattern.compile("\\w+");
        
        private static String capitalize(final String input)
        {
            return Character.toUpperCase(input.charAt(0)) + input.substring(1);
        }
        
        private static String capitalizeFully(final String input)
        {
            return Character.toUpperCase(input.charAt(0)) + input.substring(1).toLowerCase();
        }
        
        public static String capitalizeText(final String text)
        {
            final Matcher matcher = pattern.matcher(text);
            final StringBuffer builder = new StringBuffer(text.length());
            while (matcher.find())
            {
                matcher.appendReplacement(builder, capitalize(matcher.group()));
            }
            matcher.appendTail(builder);
            return builder.toString();
        }
        
        public static String capitalizeTextFully(final String text)
        {
            final Matcher matcher = pattern.matcher(text);
            final StringBuffer builder = new StringBuffer(text.length());
            while (matcher.find())
            {
                matcher.appendReplacement(builder, capitalizeFully(matcher.group()));
            }
            matcher.appendTail(builder);
            return builder.toString();
        }
        
        /**
         * @param args
         */
        public static void main(final String[] args)
        {
            System.out.println(capitalizeText("foo bar"));
            System.out.println(capitalizeTextFully("fOO   BAr"));
        }
    }
      

  5.   

    等价于
      System.out.println(sa.replaceAll("\\b(\\w)","$1QQ"));
      

  6.   

    等价于
      System.out.println(sa.replaceAll("\\b(\\w)","$1QQ"));好像没有回答到关键点啊3的意思 估计是问 为什么 $1 已经返回了第二组,为什么就不是能转换为大写
      

  7.   

    等价于
      System.out.println(sa.replaceAll("\\b(\\w)","$1QQ"));好像没有回答到关键点啊3的意思 估计是问 为什么 $1 已经返回了第二组,为什么就不是能转换为大写
    这么明显的问题,怎么就想不通?
    toUpperCase的调用在替换前就完成了,而不是在替换时调用
      

  8.   

    一般的正则表达式写法这能把 第一个字母和其他字母 独立出来,但是就像二楼那样,是不能进行大写化的,这个我感觉用complie和Mather应该可以操作,find一下,在group获取后,在设置大写,没有试验,时间关系,楼主可以试试。。
      

  9.   

    System.out.println(sa.replaceAll("\\b(\\w)","$1QQ"));
      

  10.   


            static void Main(string[] args)
            {
                var abc = "welcome to c#!";
               abc = Regex.Replace(abc, "\\w+", match => match.Value[0].ToString().ToUpper() + match.Value.Substring(1));
            }
      

  11.   

    public static void main(String[] args){
    String s = "foo bar";
    Matcher m = Pattern.compile("\\b[a-z]").matcher(s);
    StringBuffer sb = new StringBuffer(s.length());
    while(m.find()){
    m.appendReplacement(sb, m.group().toUpperCase());
    }
    m.appendTail(sb);
    System.out.println(sb.toString());
    }楼上C#看得心痒痒,Java里的怎么就这么奇葩...
      

  12.   

    可以使用totallylazy库:
    import static com.googlecode.totallylazy.regex.Regex.regex;import java.util.regex.MatchResult;import com.googlecode.totallylazy.Callable1;public class Q390784402
    {
        
        /**
         * @param args
         */
        public static void main(final String[] args)
        {
            try
            {
                final String text = regex("\\b\\w").call("foo bar").replace(new Callable1<MatchResult, String>() {
                    @Override
                    public String call(final MatchResult mr)
                    {
                        return mr.group().toUpperCase();
                    }
                });
                System.out.println(text);
            }
            catch (final Exception e)
            {
                e.printStackTrace();
            }
        }
    }
      

  13.   

    import static com.googlecode.totallylazy.regex.Regex.regex;import java.util.regex.MatchResult;import com.googlecode.totallylazy.Callable1;public class Q390784402
    {    /**
         * @param args
         */
        public static void main(final String[] args)
        {
            try
            {
                final String text = regex("\\b\\w").call("foo bar").replace(mr -> mr.group().toUpperCase());
                System.out.println(text);
            }
            catch (final Exception e)
            {
                e.printStackTrace();
            }
        }}Java 8 可以这样写
    [code=batch]D:\Temp>j:\share\jdk8\bin\javac -cp j:\library\totallylazy\totallylazy-1193.jar Q390784402.javaD:\Temp>j:\share\jdk8\bin\java -cp .;j:\library\totallylazy\totallylazy-1193.jar Q390784402
    Foo Bar[/code]
      

  14.   

    解决方法,很简单。 System.out.println(sa.replaceAll("\\b(\\w)",gets(m){return m..toUpperCase()}))
      

  15.   

    不好意思,多了个点。System.out.println(sa.replaceAll("\\b(\\w)",gets(m){return m.toUpperCase()}))
      

  16.   

    import java.util.Scanner;
    public class B{
    public static void main(String [] args){
    Scanner s= new Scanner(System.in);
    System.out.println("请输入一句英文:");
    String s1=s.nextLine();
    String[] s2=s1.split(" ");
    StringBuffer s3=new StringBuffer();
    for(int i=0;i<s2.length;i++){ String s22=s2[i].substring(1); char s21=s2[i].charAt(0);
    String s23=String.valueOf(s21);
    String s24=s23.toUpperCase();
    System.out.print(s24+s22+" ");
    }

    }}
      

  17.   


    String str="i am a boy!";
     str=Regex.Replace(str, @"(?<=^|\s)[a-z]", t=>t.Value.ToUpper());
    java的话还是自己写for循环拼接字符串吧。
      

  18.   

    在在ultraedit里ToCaps 是   选定文本中的每个词语首字大写 ,可以用这个。
     
      

  19.   

     ScriptEngineManager manager = new ScriptEngineManager();  
     ScriptEngine engine = manager.getEngineByName("js");  
     engine.eval("var t='i am a boy'; function replaceReg(){ return t.replace(/\\b(\\w)/g,function(e){return e.toUpperCase()}) }println(replaceReg())");
      

  20.   

    额外全额客气今晚你可就全文iejqwje
      

  21.   

    package test;import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class DaXie {    public static void main(String[] args) {
            String str = "i am a boy";
            StringBuilder sBuilder = new StringBuilder();
            Pattern pattern = Pattern.compile("^[a-zA-Z]+|\\S[a-zA-Z]+");
            Matcher matcher = pattern.matcher(str);
            String tempString = null;
            while(matcher.find())
            {
                tempString = matcher.group();
                tempString = (tempString.charAt(0)+"").toUpperCase()+tempString.substring(1,tempString.length());
                sBuilder.append(tempString).append(" ");
            }
            System.out.println(sBuilder.toString());
        }
    }
      

  22.   

    Java正则:
    StringBuffer a = new StringBuffer("i am boy ");
    Pattern pattern = Pattern.compile("[a-z]+\\s*");
    Matcher matcher = pattern.matcher(a.toString());
    while (matcher.find())
    {
    String tmp = matcher.group();
    a.replace(matcher.start(), matcher.start()+1, tmp.substring(0, 1).toUpperCase());
    }
    System.out.println(a.toString());
      

  23.   

    这是我的实现,我不是用正则做的,控制台输出是I Am A Boy
    String yourString="i am a boy";
    String Seperator=" ";
    String[] Resources=yourString.split(Seperator);

    for(int i=0;i<Resources.length;i++){


    String left = String.valueOf(Resources[i].charAt(0)).toUpperCase();
    String right = Resources[i].substring(1,Resources[i].length());
    String total = left+ right +Seperator;
    System.out.print(total);

    }