Изменен Pattern.split () , чтобы включить сопоставленный шаблон в список
Добавлено
// add match to the list
matchList.add(input.subSequence(start, end).toString());
Полный источник
public static String[] inclusiveSplit(String input, String re, int limit) {
int index = 0;
boolean matchLimited = limit > 0;
ArrayList matchList = new ArrayList();
Pattern pattern = Pattern.compile(re);
Matcher m = pattern.matcher(input);
// Add segments before each match found
while (m.find()) {
int end = m.end();
if (!matchLimited || matchList.size() < limit - 1) {
int start = m.start();
String match = input.subSequence(index, start).toString();
matchList.add(match);
// add match to the list
matchList.add(input.subSequence(start, end).toString());
index = end;
} else if (matchList.size() == limit - 1) { // last one
String match = input.subSequence(index, input.length())
.toString();
matchList.add(match);
index = end;
}
}
// If no match was found, return this
if (index == 0)
return new String[] { input.toString() };
// Add remaining segment
if (!matchLimited || matchList.size() < limit)
matchList.add(input.subSequence(index, input.length()).toString());
// Construct result
int resultSize = matchList.size();
if (limit == 0)
while (resultSize > 0 && matchList.get(resultSize - 1).equals(""))
resultSize--;
String[] result = new String[resultSize];
return matchList.subList(0, resultSize).toArray(result);
}
Вы пытаетесь смоделировать модуль Players
, а не класс Players
. Попробуйте это:
@patch.object(myproject.entities.Players.Players, 'add_player', fake_add_player)
Некоторые несвязанные, незапрошенные советы:
Players.py
, содержащий класс Player
. Я ожидаю, что этот класс будет жить в модуле entities
(myproject/entities.py
вместо myproject/entities/Players.py
). ваш fake_add_players
сломан. Должно быть:
def fake_add_player(self, player):
self.players.append(player)
После патча Игроки, self
относится к Players
, а не PlayersTest
. Вы можете удалить функцию из класса, чтобы избежать этой путаницы.
Players
также может быть пользовательским менеджером .