在java中,如何附加忽略重复项的字符串

在java中,如何附加忽略重复项的字符串,java,Java,我的字符串是“ABC,D”,现在我想写一个方法append(initialStr,currStr),仅当currStr在initialStr中不存在时才将currStr追加到initailStr。我尝试了一个用逗号分隔的方法,但由于我的字符串包含逗号,所以该方法对我不起作用。任何帮助都将不胜感激。一个选项是使用indexOf()确定一个字符串是否包含在另一个字符串中 String appendIfNotPresent(String initial, String curr) { if (i

我的字符串是“ABC,D”,现在我想写一个方法
append(initialStr,currStr)
,仅当currStr在
initialStr
中不存在时才将
currStr
追加到
initailStr
。我尝试了一个用逗号分隔的方法,但由于我的字符串包含逗号,所以该方法对我不起作用。任何帮助都将不胜感激。

一个选项是使用
indexOf()
确定一个字符串是否包含在另一个字符串中

String appendIfNotPresent(String initial, String curr)
{
   if (initial.contains(curr))
     return initial;
   else
     return initial + curr;
}
 int i = initialStr.indexOf(currStr)
 if(i != -1){
    //go ahead and concatenate
 }

您可以使用
indexOf
搜索currStr。如果
indexOf
方法返回-1,则不存在匹配项。任何其他数字都将是子字符串的起始位置

if(initialStr.indexOf(currStr) == -1) {
    initialStr += currStr;
}
此外,如果大小写不重要,可以将toLowerCase()或toUpperCase()添加到上述代码示例中:

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

如果有很多字符串操作要执行,我建议您查看ApacheCommonsLang库中的StringUtils类。它提供了许多有用的方法。下面是API的链接:

我会这样写,使其适用于
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;
      }
   }

次要:名称“append”有一个明确的含义,与此不同。我建议用“appendIfNotPresent”之类的词。