это решение: (РЕДАКТИРОВАТЬ: это еще проще)
public static Pair<String,String> getSplittedByQuestionMark(String term){
String[] list=term.split("[?]");
return new Pair<String,String>(list[0],list[1]);
}
Я проверил это:
@Test
public void testGetSplittedByQuestionMark(){
ArrayList<String> terms=new ArrayList<String>();
ArrayList<Pair<String,String>> expected=new ArrayList<Pair<String,String>>();
terms.add("test?a");
terms.add("test?20");
terms.add("test, with comma?ab10");
expected.add(new Pair<String,String>("test","a"));
expected.add(new Pair<String,String>("test","20"));
expected.add(new Pair<String,String>("test, with comma","ab10"));
for(int i=0;i<terms.size();i++){
Pair<String,String> answer = StringStandardRegex.getSplittedByQuestionMark(terms.get(i));
assertTrue("answer="+answer.getFirst(),answer.getFirst().equals(expected.get(i).getFirst()));
assertTrue("answer="+answer.getSecond(),answer.getSecond().equals(expected.get(i).getSecond()));
}
}
[РЕДАКТИРОВАТЬ после замечания ниже] Я добавил тестЯ не понимаю, в чем проблема, это также работает (и даже более просто):
@Test
public void testGetSplittedByQuestionMarkNotUsingRegex(){
ArrayList<String> terms=new ArrayList<String>();
ArrayList<Pair<String,String>> expected=new ArrayList<Pair<String,String>>();
terms.add("test?a");
terms.add("test?20");
terms.add("test, with comma?ab10");
expected.add(new Pair<String,String>("test","a"));
expected.add(new Pair<String,String>("test","20"));
expected.add(new Pair<String,String>("test, with comma","ab10"));
for(int i=0;i<terms.size();i++){
String[] answer=terms.get(i).split("\\?");
assertTrue("answer="+answer[0],answer[0].equals(expected.get(i).getFirst()));
assertTrue("answer="+answer[1],answer[1].equals(expected.get(i).getSecond()));
}
}