2013-06-26 183 views
-5

我以String的形式獲取名稱。如何以下列格式顯示:如果是單個單詞,則需要單獨顯示第一個字符。如果是兩個單詞,我需要顯示單詞的前兩個字符。檢查字符串是否包含多個單詞

John : J 
Peter: P 
Mathew Rails : MR 
Sergy Bein : SB 

因爲我不知道該列表將返回相同的值,所有的時間我不能使用enum。雖然他們說,它永遠不會改變。

String name = myString.split(''); 
topTitle = name[0].subString(0,1); 
subTitle = name[1].subString(0,1); 
String finalName = topTitle + finalName; 

上面的代碼很好,但它不工作。我也沒有得到任何例外。

+1

定義 「不工作」。 –

+0

什麼異常? – PermGenError

+4

一切都很好,除了你的名字應該是一個數組。 'String#split'返回一個數組。那麼,該代碼是如何編譯的呢? –

回答

0

您嘗試的代碼中很少有錯誤。

  1. String#split將字符串作爲正則表達式。
  2. String#split的返回值是一個String數組。

所以它應該是:

String[] name = myString.split(" "); 

String[] name = myString.split("\\s+); 

您還需要檢查的數組元素先這樣避免異常#:

String topTitle, subTitle; 
if (name.length == 2) { 
    topTitle = name[0].subString(0,1); 
    subTitle = name[1].subString(0,1); 
} 
else 
    topTitle = name.subString(0,1); 
+0

您必須檢查名稱[1]和名稱[0]是否爲空,因爲他說「如果它是單個單詞,我需要單獨顯示第一個字符。」 – JREN

+0

@JREN:我正在檢查'name.length == 2'以確保。 – anubhava

0

String.split方法將字符串拆分爲數組根據你的正則表達式,字符串。

這應該工作:

String[] names = myString.split("\\s+"); 
String topTitle = names[0].subString(0,1); 
String subTitle = names[1].subString(0,1); 
String finalName = topTitle + finalName; 
0

你接近..

String[] name = myString.split(" "); 
String finalName = name[0].charAt(0)+""+(name.length==1?"":name[1].charAt(0)); 

(name.length==1?"":name[1].charAt(0))是一個三元運算符,其將返回空,如果名稱數組的長度爲1,否則它會返回第1個字符

+0

您必須檢查名稱[1]和名稱[0]是否爲空,因爲他說「如果它是單個單詞,我需要單獨顯示第一個字符。」 – JREN

+0

你還應該解釋三元運算符是如何工作的,如果OP不知道它是什麼,他不會選擇你的最佳答案,因爲他不知道'name.size()== 1是什麼?「 「:name [1] .charAt(0)'表示 – BackSlash

+0

@返回閃存點數..感謝 – Anirudha

0

第一:「名稱」應該是一個數組。

String[] names = myString.split(" "); 

二:你應該使用if函數和變量length確定變量的長度。

String initial = ""; 
if(names.length > 1){ 
    initial = names[0].subString(0,1) + names[1].subString(0,1); 
}else{ 
    initial = names[0].subString(0,1); 
} 

或者你可以使用一個for循環

String initial = ""; 
for(int i = 0; i < names.length; i++){ 
    initial += names[i].subString(0,1); 
} 
0

這會爲你工作

public static void getString(String str) throws IOException { 
    String[] strr=str.split(" "); 
    StringBuilder sb=new StringBuilder(); 
    for(int i=0;i<strr.length;i++){ 
     sb.append(strr[i].charAt(0)); 
    } 
    System.out.println(sb); 
} 
相關問題