簡體   English   中英

如何獲取LastName,FirstName的字符串並返回FirstInitial.LastName

[英]How to take a String of LastName, FirstName and return FirstInitial.LastName

預期的輸入 :Doe,John

預期產出 :J。Doe

     public static void main(String[] args) {

         String z = "Doe, John";
         System.out.println(z);
         String y = formatName(name);
         System.out.println(y);
     }

     public static String formatName(String name) {
        String str[] = name.split(",");
        StringBuilder sb = new StringBuilder();
        sb.append(str[1].charAt(0));
        sb.append(". ");
        sb.append(str[0]);
        return sb.toString();
   }

我的輸出不如預期。

使用String.split正則表達式匹配(可選)空格

輸入中的逗號后面有空格,您可以在split修改正則表達式

String str[] = name.split(",");

String str[] = name.split(",\\s*");

匹配和刪除可選的空格。 在我完成上述更改后,我運行了您的代碼,並獲得了(預期)輸出

Doe, John
J. Doe

修剪領先的白色空間

或者 ,您可以在獲得第一個字符之前trim str[1]

sb.append(str[1].trim().charAt(0)); //<-- will also remove leading space

使用編譯Pattern正則表達式

另一種可能的選擇是編譯正則表達式 Pattern並使用Matcher

// Match (and group) one more characters followed by a "," and
// optional whitespace. Then match (and group) one character followed
// any number of optional characters.
private static Pattern pattern = Pattern.compile("(.+),\\s*(.).*");
public static String formatName(String name) {
    Matcher m = pattern.matcher(name);
    if (m.matches()) {
        return String.format("%s. %s", m.group(2), m.group(1));
    }
    return name;
}

另一種獲取FirstInitial.LastName的簡單方法

除了采用分體式,您可以用串並基於逗號的位置, ,操縱名得到的輸出:

String s = "Doe, John";

s = s.replace(" ", "");                                      //remove spaces
int i = s.indexOf(",");                                      //get pos of comma
String name = s.charAt(i+1) + ". " + s.substring(0, i);      //create name

輸出:

J. Doe

sb.append(str[1].charAt(0)); charAt()索引應為1而不是0。

String str[] = name.split(","); 將返回[Doe, John] ,注意第二個元素之前的空格。

更好的是使用split(", ")

我根據我的理解嘗試了這個。 用於循環和修剪項目

public static String formatName(String name) {
        String str[] = name.split(",");
        for(int i = 0 ; i < str.length ; i++){
            str[i] = str[i].trim();
            //System.out.println("+"+str[i]+"+");
        }

        StringBuilder sb = new StringBuilder();
        sb.append(str[1].charAt(0));
        sb.append(".");
        sb.append(str[0]);
        sb.append(".");
        return sb.toString().trim();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM