2009-09-23 104 views
4

我有串說:「ABC,d」,現在我希望寫的方法append(initialStr, currStr)其追加currStrinitailStr只有currstr是不是已經存在於initialStr。我嘗試了一種用逗號分割的方法,但由於我的字符串中包含逗號,所以該方法對我不起作用。任何幫助將不勝感激。在java中,如何追加字符串忽略重複

回答

6
String appendIfNotPresent(String initial, String curr) 
{ 
    if (initial.contains(curr)) 
    return initial; 
    else 
    return initial + curr; 
} 
+4

次要的:名字「追加」有一個完善的意義,這與此不同。我會建議像「appendIfNotPresent」。 – CPerkins 2009-09-23 12:04:44

+1

好主意,我修正了 – 2009-09-23 12:09:43

0

一種選擇是使用indexOf()來確定一個字符串是否包含在另一個字符串中。

int i = initialStr.indexOf(currStr) 
if(i != -1){ 
    //go ahead and concatenate 
} 
0

您可以使用indexOf來搜索currStr。如果indexOf方法返回-1,則不匹配。任何其他號碼將是子串的起始位置。

if(initialStr.indexOf(currStr) == -1) { 
    initialStr += currStr; 
} 

另外,如果情況不要緊,你可以添加toLowerCase()或toUpperCase()上面的代碼示例:

if(initialStr.toLowerCase().indexOf(currStr.toLowerCase()) == -1) { 
    initialStr += currStr; 
} 

如果你有大量的字符串操作來執行,我建議查看Apache Commons Lang庫中的StringUtils類。它提供了很多有用的方法。這裏是一個鏈接到API:http://commons.apache.org/lang/api-release/org/apache/commons/lang/StringUtils.html

2

我會寫像這樣,以使其成爲null值工作:

String appendIfNotContained(String initial, String curr) { 
     if (initial == null) { 
     return curr; 
     } else if (curr == null) { 
     return initial; 
     } else { 
     return initial.contains(curr) ? initial : initial + curr; 
     } 
    } 
+0

爲什麼downvote? – JRL 2009-09-23 13:32:49