【问题标题】:change starting letter to upper case将起始字母更改为大写
【发布时间】:2026-02-04 14:55:01
【问题描述】:

我正在使用 Java,我有一个字符串,并且想将单词的第一个字母变成大写(每个单词用逗号分隔)。

我知道使用WordUtils.capitalize(str) 是可能的,但我所拥有的如下。

String str = "companies,user,";

我知道 splitWordutils 可以胜任这项工作,但我正在寻找单线。


输出看起来是一个字符串

Companies, User
^         ^^

Companies,User
^         ^

而不是

Companies,user
^         ^

【问题讨论】:

  • 为什么不用split和wordutils做一个函数,用的时候会“单线”...
  • @FahimParkar 查看我的编辑。

标签: java string capitalization


【解决方案1】:

您可以在一行中尝试以下操作!:

String str = "companies,user,";
        str = String.valueOf(str.charAt(0)).toUpperCase() + str.substring(1,str.indexOf(","))+
            str.substring(str.indexOf(","),str.indexOf(",") + 1) + String.valueOf(str.charAt(str.indexOf(",") + 1)).toUpperCase() + str.substring(str.indexOf(",") + 2);

【讨论】:

  • 非常聪明...这是测试字符串...如果我有 abc,xyz 怎么办
  • 如果你有 "abc,xyz" 它也适用于我的代码..试试吧。您不应该在“,”之间使用空格键,尽管哈哈 ;)
  • 这仅适用于逗号分隔列表中的前两个单词。任何其他单词都不会大写。
  • @nansen:OP 没有要求在包含两个以上单词的字符串上应用它..;)
【解决方案2】:

很简单:

String str = "companies,user,";
String strCaps = Character.toUpperCase(str.charAt(0)) + str.substring(1);

编辑:使其成为单行的唯一方法是使其成为一个方法,并使用该方法,如下所示:

public static void main(String[] args)
{
    String str = "companies,user,";
    System.out.println(capitaliseEach(str));
}

static String capitaliseEach(String string)
{
    StringBuilder sb = new StringBuilder();
    String[] split = string.split(",");
    for(int i = 0; i < split.length; i++)
    {
        if(split[i] != null && split[i].length() >= 2)
        {
            sb.append(Character.toUpperCase(split[i].charAt(0))).append(split[i].substring(0));
        }
        if((i + 1) < split.length)
        {
            sb.append(",");
        }
    }
    return sb.toString();
}

【讨论】:

  • 是的,我知道。因此,我一直在寻找一个衬里的东西。我已经完成了拆分和大写,但我不想使用方法。我认为会有一些预定义的功能可用。虽然你在轨道上,但我明天或以后会接受你的回答,因为我仍然会等待这个。
【解决方案3】:

clojure 之类的函数式语言非常适合这种情况。由于 clojure 是一种 jvm 语言,因此您可以从 java 中评估 clojure 代码。如果你绝望了,即使是一个班轮:

RT.var("clojure.core", "eval")
      .invoke(RT.var("clojure.core", "read-string")
           .invoke(
              "(clojure.string/join \", \" " +
                "(map clojure.string/capitalize " +
                  "(clojure.string/split \"companies,user,\" #\",\")))"));

普通的clojure版本:

(clojure.string/join 
   ", " (map clojure.string/capitalize 
          (clojure.string/split "companies,user," #",")))

老实说,你永远都不想那样做!但是,既然您正在寻找单线,我想这值得一玩。

【讨论】:

    【解决方案4】:

    intiCap 的可重用方法

    public class YarlagaddaSireeshTest{
    
        public static void main(String[] args) {
            String FinalStringIs="";
            String testNames="Sireesh,Yarlagadda";
            String[] name=testNames.split(",");
    
            for(String nameIs :name){
            FinalStringIs+=getIntiCapString(nameIs)+","
                    ;
            }
            System.out.println("Final Result "+ FinalStringIs);
    
        }
    
        public static String getIntiCapString(String param) {
            if(param != null && param.length()>0){          
                char[] charArray = param.toCharArray(); 
                charArray[0] = Character.toUpperCase(charArray[0]); 
                return new String(charArray); 
            }else{
                return "";
            }
        }
    }
    

    【讨论】:

    • 如果我写 companies,user, 而不是 yashwant 我会有什么输出?
    最近更新 更多