【问题标题】:Apache WordUtils.capitalize not doing its jobApache WordUtils.capitalize 没有做它的工作
【发布时间】:2013-10-10 02:42:06
【问题描述】:

我正在尝试将字符串的第一个字符大写。我看过其他关于堆栈溢出的文章,并尝试了 Apache 常用包。但是,输出保持小写,并且未修改。这是我的代码;

package name;

import java.util.Scanner;

import java.lang.Object;

import org.apache.commons.lang3.text.WordUtils;

public class Name {


public static void main(String[] args){


    Scanner input = new Scanner(System.in);

    System.out.println("What is your first name?");
    String first = input.nextLine();

    System.out.println("What is your last name?");
    String last = input.nextLine();

    String full = (first + " " + last);

    WordUtils.capitalize(full);

    System.out.println("Your name is " + full);

    input.close();
    }

}

我也试过了

    System.out.println("What is your first name?");
    String first = input.nextLine();
            WordUtils.capitalize(first);

    System.out.println("What is your last name?");
    String last = input.nextLine();
            WordUtils.capitalize(last);     

    System.out.println("Your name is " + first + last);

我尝试使用 capitalzieFully,但这也没有产生任何结果。 (我知道 Object 没有被使用,我只是尝试将它作为测试导入)。

【问题讨论】:

    标签: java string apache-commons


    【解决方案1】:

    你可以使用:

     WordUtils.capitalizeFully(full);
    

    【讨论】:

      【解决方案2】:

      字符串是不可变的,您可以随时将字符串修改为以后的新内容。

      【讨论】:

        【解决方案3】:

        字符串在 java 中是不可变的。

         first= WordUtils.capitalize(first);
        

        因此,您已将其重新分配给 capitalize 方法返回的 first

            String first= "test";
            WordUtils.capitalize(first); 
           //Above method returns a new String,you are not receiving that
        
            // Still first is "test" because String is immutable.
             first= WordUtils.capitalize(first);  
            //Now  first  = "TEST"
        

        并且在其余的地方也这样做。

        【讨论】:

        • 感谢您非常详细的解释,我很感激。继续努力工作。
        【解决方案4】:

        不使用任何库

        first=first.substring(0,1).toUpperCase()+first.substring(1).toLowerCase();
        last=last.substring(0,1).toUpperCase()+last.substring(1).toLowerCase();
        

        【讨论】:

          【解决方案5】:
          full = WordUtils.capitalize(full);
          

          您需要将修改后的 String 分配回自身以反映更改。因为,字符串是不可变的。

          或者如果你不想使用任何外部库,你可以这样做:

          full = Character.toUpperCase(full.charAt(0)) + full.substring(1);
          

          【讨论】:

            【解决方案6】:

            试试

            last = WordUtils.capitalize(last);
            

            该方法返回一个字符串,字符串是不可变的。

            【讨论】:

            • 你的意思是替换 input.nextLine 吗?那不是让我无法输入我的字符串吗?
            • 它将下一行分配给变量last,然后将last更改为大写
            猜你喜欢
            • 1970-01-01
            • 2020-02-08
            • 1970-01-01
            • 2017-08-26
            • 2018-10-06
            • 1970-01-01
            • 2020-11-23
            • 1970-01-01
            • 2016-04-17
            相关资源
            最近更新 更多