我推荐这种任务的正则表达式Matcher。
下面是一个代码示例它应该做的伎俩:
String inputList = "|Mary Jane, 1990, Brown|,|Henry Rollings, 1974, Red|,|Mary Mary Mary, 1974, Red|,|Someone Else, 1974, Red|";
StringBuffer listWithMatchesRemoved = new StringBuffer();
StringBuffer matchedItems = new StringBuffer();
String searchString = "Mary";
Pattern p = Pattern.compile("([|][^|]*?"+searchString+"[^|]*?[|]),?");
Matcher m = p.matcher(inputList);
while(m.find())
{
if(matchedItems.length()!=0)
matchedItems.append(",");
matchedItems.append(m.group(1));
m.appendReplacement(listWithMatchesRemoved, "");
}
m.appendTail(listWithMatchesRemoved);
System.out.println("Matches:" + matchedItems);
System.out.println("The rest:" + listWithMatchesRemoved);
可能使用类似http://lucene.apache.org/? –
如果您完全描述问题,我相信会有更好的解决方案,请尝试使用列表的真实示例以及确切的输出结果。 – medopal
| Blont,1988,Adam Moloudnjead |,|Rött,1978,Daniel Johannson |那就是这个列表的一个例子,如果我搜索“Adam”,那么| |之间的所有内容都应该被取出并保存在另一个列表中。我希望我现在清楚。 :) –