2015-10-07 232 views
-1

我有一個需求,我需要將多個Web服務調用中的多個值附加到最後一個以逗號分隔的字符串中。用逗號分隔的Java字符串

某些值可能爲空,在這種情況下,我需要檢查是否爲空,然後將其附加爲空字符串。 如果其中一個字符串沒有值,則不應附加逗號。

請幫我解決這個問題。這是我所做的代碼。

   StringBuilder sb = new StringBuilder(); 
      if (usersList.totalCount != 0 && usersList.totalCount >= 1) { 
       logger.info("usersList.totalCount ----->" 
         + usersList.totalCount); 
       for (KalturaUser user : usersList.objects) { 
        if (user.id != null) { 
         sb.append(userId); 
        } 
        if (user.firstName != null) { 
         sb.append(",").append(userFirstName); 
        } 
        if (user.lastName != null) { 
         sb.append(",").append(user.lastName); 
        } 
        if (user.email != null) { 
         sb.append(",").append(user.email); 
        } 
        if (user.roleNames != null) { 
         sb.append(",").append(user.roleNames); 
        } 
        if (user.partnerData != null) { 
         sb.append(",").append(user.partnerData); 
        } 

       } 
       System.out.println(sb); 
      } 

感謝, 的Raji

+1

你已經做到了。你現在的代碼有什麼問題? –

+1

有什麼問題? – yogidilip

+0

我沒有收到發生的事情:輸出爲:NULL,NULL, NULL,NULL, NULL,NULL,管理,james.smith @ kaltura.com ,, PW = f865b53623b121fd34ee5426c792e5c33af8c227, NULL,NULL,人Bandel ,,, PW = 7c4a8d09ca3762af61e59520943dc26494f8941b,123456 NULL,NULL,法恩斯沃思,pacoh @ mx1.ibm.com ,, PW = 9bc34549d565d9505b287de0cd20ac77be1d3f2c, NULL,NULL,法勒,,, PW = 64c1a55c1af56bc31d1e1480390737678577ef10, NULL,NULL,Colodny,david.colodny @ kaltura。 com,pw = e0c93ecb0f02f2ca30af9f5edea91c1a328705a8, null,null, –

回答

1

目前尚不清楚你的問題是什麼,但如果你正在尋找一個更好的或不同的方法,我發現最好是追加到列表<字符串>然後使用StringUtils.join生成最終字符串。

2

我認爲你正在尋找的東西是這樣的:

public static String asString(Object value) { 
    return value == null ? "" : value.toString(); 
} 

for (KalturaUser user : usersList.objects) { 
    sb.append(asString(user.id)); 
    sb.append(",").append(asString(user.firstName)); 
    sb.append(",").append(asString(user.lastName)); 
    sb.append(",").append(asString(user.email)); 
    sb.append(",").append(asString(user.roleNames)); 
    sb.append(",").append(asString(user.partnerData)); 
} 
2

那麼,在你的測試,如

if (user.id != null) { 
    sb.append(userId); 
} 

要檢查user.id,但附加userId。這是兩個不同的變量。

你或許應該把它變成

if (user.id != null) { 
    sb.append(user.id); //instead of sb.append(userId); 
} 
+0

是的......我犯了一個錯誤。謝謝。現在好了。 –

+0

@RajyalakshmiS如果這是唯一的問題,你的代碼現在可以正常工作,那麼應該將這個問題標記爲[接受其中一個答案](http://meta.stackexchange.com/a/5235/186652)解決了你的問題。 – Pshemo

0

我會做這樣的事情。它基於Java8流,但在這裏您不需要對每個屬性執行非空檢查(.filter爲您執行此操作)。我認爲users.object是一個數組列表,如果不是,你可能需要將其轉換成流中的其他方式

if (userList.totalCount > 0) { 
    logger.info("usersList.totalCount ----->" + usersList.totalCount); 

    String result = userList 
        .objects 
        .stream() 
        .map(user -> { 
         return Stream.of(user.firstName, user.id, user.lastName, user.email, user.roleNames, user.partnerData) //get the properties you need into the stream 
             .filter(property -> property != null) // filter out null properties 
             .collect(Collector.joining(",")); //join them by comma 
        }) 
        .collect(Collector.joining(",")); //join user strings with comma 

    System.out.println(result); 
} 
0

您可以使用一個類從叫喬伊納一個谷歌庫。

String concatenedString = Joiner.on(",").skipNulls().join(itemToAdd); 

你可以找到這個類谷歌的集合-1.0.jar