Мне нужна помощь, потому что я не могу остановиться, пока я oop Я поправил место. В этом примере я хочу удалить последний символ, если строка «seq» будет такой же, как некоторое число в списке (867), чем stop. После нахождения String для добавления их в новый ArrayList более продвинуться вперед, чем пытаться найти остальную часть String (75). Если найден, также введите новый массив. Все лучшие решения очень приветствуются. Спасибо! Список ArrayList может содержать сотни элементов, всего 4, некоторые элементы в списке могут повторяться более одного раза. Найти первым в списке мне подходит на данный момент, если он найден, разделите 86775 на 867: 75. 867 удалить из String seq и добавить в новый ArrayList. Наконец, мы должны также найти 75, если они не существуют, разделить на 7: 5 и попытаться найти 7 и 5. В моем списке всегда существуют отдельные числа, поэтому проблем с исключениями нет. Если вы хотите использовать метод разделения всегда, мне нужно найти как можно большее число, чем если бы не было найдено разделение и удаление последнего, но каждого di git, которое мне нужно. Строка, которую ищет, может содержать даже 20 символов или более. Это простейший возможный пример. Я искал много методов для решения этой проблемы и не уверен, что это лучший вариант.
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("567");
list.add("867");
list.add("86");
list.add("75");
System.out.println(list);
String seq = "86775";
System.out.println(seq + ": found ?: " + getPatternFound(String.valueOf(list), seq) + " times");
int nbChar = 0;
do {
getRemoveLastChar(seq, 1);
if (getPatternFound(String.valueOf(list), seq) == 0) ;
getRemoveLastChar(seq, 2);
nbChar++;
System.out.println(getRemoveLastChar(seq, nbChar));
}
while (nbChar < seq.length());
}
private static String getRemoveLastChar(String str, int nbChar) {
return str.substring(0, str.length() - nbChar);
}
private static int getPatternFound(String longString, String pat) {
Pattern pattern = Pattern.compile(pat);
Matcher matcher = pattern.matcher(longString);
int count = 0;
while (matcher.find())
count++;
return count;
}
}
[567, 867, 86, 30] 867755: найдено?: 0 раз 86775 8677 867 <- стоп здесь 86 8 </p>