Apache WordUtils.capitalize没有完成它的工作

时间:2013-10-03 11:53:31

标签: java string apache-commons

我试图将字符串的第一个字符大写。我已经看过有关堆栈溢出的其他文章,并尝试了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,我只是尝试将其作为测试导入)。

6 个答案:

答案 0 :(得分:4)

String在java中是不可变的。

 first= WordUtils.capitalize(first);

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

    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"

并且在剩下的地方也这样做。

答案 1 :(得分:3)

尝试

last = WordUtils.capitalize(last);

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

答案 2 :(得分:1)

full = WordUtils.capitalize(full);

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

或者,如果您不想使用任何外部库,您可以执行以下操作:

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

答案 3 :(得分:1)

不使用任何库

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

您可以使用:

 WordUtils.capitalizeFully(full);