我有一个包含多个关键字的字符串,并用空格分隔,并且有几个字符串集。我编写了一个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的实现?
答案 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(不是'')。