2010-03-02 56 views
1

如何獲取存取方法以將名稱的第一個字母返回爲大寫,其餘的都是小寫,無論輸入什麼內容?返回存取方法的問題

public class Name 
{ 
    private String first; 
    private String last; 

    /** 
    * Constructor for objects of class Name 
    */ 
    public Name(String firstName, String lastName) 
    { 
     first = firstName; 
     last = lastName; 
    } 

    /** 
    * @returns firstName 
    */ 
    public String getFirstname() 
    { 
     return first;  
    } 

    /** 
    * @returns lastName 
    */ 
    public String getLastname() 
    { 
     return last; 
    } 

    /** 
    * @returns Fullname 
    */ 
    public String getFullname() 
    { 
     return first + last; 
    } 

    /** 
    * @para new firstname 
    */ 
    public void setFirstname(String firstName) 
    { 
     first = firstName; 
    } 
} 
+9

不要!有些人的名字中有一個以上的大寫字母。 – 2010-03-02 01:08:21

+1

我同意卡爾。在您的輸入中,您應該建議將其資本化,但您不應該改變它。 – 2010-03-02 01:15:20

回答

0

這是我真的覺得這樣做的唯一方法:

last.substring(0,1).toUpperCase() + last.substring(1).toLowercase() 
+2

它在空字符串上失敗。 – 2010-03-02 01:14:19

+1

並在代理對。 (這是針對不同尋常的名字的人。) – 2010-03-02 01:36:14

+1

'null'(在構造中未檢查)也失敗。 – 2010-03-02 01:37:16

0

使用StringUtils.capitalize從下議院郎。

如果可用,請始終使用庫,它們可能會經過所有的角落案例,你只有在解決了bug後的錯誤後才能找到。

+1

但是,這並不能確保名稱的其餘部分是小寫字母;它只是把第一個大寫,然後保持原樣。 OP表示「不管輸入什麼都是小寫的」 – charlie 2010-03-02 01:16:34

1
public static String capitalizeFirst(String s) { 
    return Character.toUpperCase(s.charAt(0)) + s.substring(1).toLowerCase(); 
} 

public String getFirstname() { 
    return capitalizeFirst(first); 
} 

顧名思義,capitalizeFirst大寫一個非空字符串的第一個字符和字符串爲小寫的其餘部分轉換。