String删除多个字符串集中的所有元素并返回剩余的字符串

时间:2013-11-20 16:58:41

标签: java regex string

我有一个包含多个关键字的字符串,并用空格分隔,并且有几个字符串集。我编写了一个API来从空格分隔的字符串中删除这些字符串集中的所有元素,并返回剩余的空格分隔字符串。我的API受字符串输入/输出类型的限制。

例如,输入字符串S="A B C D E",有两个字符串集S1={A,B}, S2={C},我的API必须从A,B,C中删除S并返回"D E"。< / p>

这是我的代码:

public String filterString( String keyword, Set<String> set1, String<String> set2 )
{
    // convert string to set in order to remove set
    Set<String> keywordSet = new HashSet<String>( Arrays.asList( keyword.split( "\\s+" ) ) );
    keywordSet.removeAll( set1 );
    keywordSet.removeAll( set2 );

    // convert set to string
    StringBuffer strBuf = new StringBuffer();
    for ( String s : keywordSet )
        strBuf.append( s + " " );
    return strBuf.toString();
}

我的问题:是否有更好或最佳的方法来重写我的API的实现?

2 个答案:

答案 0 :(得分:0)

您可以使用我们的朋友Regex,如here所示。您必须将您的集合连接到Pattern.compile参数中的表达式。

import java.util.regex.Pattern;
import java.util.regex.Matcher;

class Module1{
  public static void main(String[] asd){
  String sourcestring = "source string to match with pattern";
  Pattern re = Pattern.compile("[^ABC\\s+]");
  Matcher m = re.matcher(sourcestring);
  int mIdx = 0;
    while (m.find()){
      for( int groupIdx = 0; groupIdx < m.groupCount()+1; groupIdx++ ){
        System.out.println( "[" + mIdx + "][" + groupIdx + "] = " + m.group(groupIdx));
      }
      mIdx++;
    }
  }
}

答案 1 :(得分:0)

你可以使用char []替换set1和set2,然后关键字toCharArray和foreach等于char [] replace''之前。最后的syso(不是'')。