Правильно разделить длинную строку с помощью contentEquals (s) - PullRequest
0 голосов
/ 05 августа 2020

Мне нужна помощь, потому что я не могу разбить String с помощью contentEquals (). В этом примере я хочу удалить последний символ, если строка «seq» будет такой же, как какое-то число в списке (867), чем stop. Более продвинуться вперед после поиска String, чтобы добавить их в новый ArrayList, чем пытаться найти остальную часть String (75). Список ArrayList может содержать сотни элементов, их всего несколько, некоторые элементы в списке могут повторяться более одного раза. Если найдено, разделите 86775 ... на 867: 75 .... 867 удалит из String seq и добавит в новый ArrayList. Наконец, мы должны найти также 75, если они не существуют, разделить на 7: 5 и попытаться найти 7 и 5 и так далее. В моем списке всегда есть одиночные числа, поэтому никаких проблем с исключениями. Если вы хотите использовать метод разделения всегда, мне нужно найти как можно большее число, чем если бы не было найдено разделение и удаление последнего, но каждого di git, которое мне нужно. Строка seq может содержать даже 20 символов или больше. Основная проблема - это решение: Новый список: [86, 7, 5, 9, 8, null], но должен быть: Новый список: ["86, 7, 7, 5, 5, 86, 97, 8, 7» ] Также мой метод: getContinue - это childi sh. Спасибо за помощь.

public class Main {
    public static void main(String[] args) {

         String[] stringArray = {"86","97", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "20", "30", "40", "50", "60", "70", "80", "90"};
        ArrayList<String> list = new ArrayList(Arrays.asList(stringArray));
        List<String> newList = new ArrayList<>();

        System.out.println("List = " + list);
        String seq = "867755869787";

        System.out.println("New list: " + getContinue(seq, stringArray));
    }

    private static String search(ArrayList<String> list, String seq) {
        while (seq.length() > 0) {
            System.out.println("analyzing seq: " + seq);
            // boolean broken = false;
            for (String s : list) {
                if (seq.contentEquals(s)) { // if matched
                    System.out.println("found match: " + s);
                    // do your logic, for example
                    seq = seq.replace(s, "");
                    // quit the loop at right place
                    return s;
                }
            }
            seq = seq.substring(0, seq.length() - 1);
        }
        return null;
    }


    private static String getContinue(String seq, String[] stringArray) {
        List<String> newList = new ArrayList<>();
        ArrayList<String> list = new ArrayList(Arrays.asList(stringArray));

        String result = search(list, seq);
        newList.add(result);

        String resultSplit1 = seq.replace(result, "");
        if (resultSplit1.length() > 2) ;
        String result2 = search(list, resultSplit1);
        newList.add(result2);

        String resultSplit2 = resultSplit1.replace(result2, "");
        if (resultSplit2.length() > 2) ;
        String result3 = search(list, resultSplit2);
        newList.add(result3);

        String resultSplit3 = resultSplit2.replace(result3, "");
     if (resultSplit3.length() > 2) ;
        String result4 = search(list, resultSplit3);
        newList.add(result4);

        String resultSplit4 = resultSplit3.replace(result4, "");
        if (resultSplit4.length() > 2) ;
        String result5 = search(list, resultSplit4);
        newList.add(result5);

        String resultSplit5 = resultSplit4.replace(result5, "");
      if (resultSplit5.length() > 2) ;
        String result6 = search(list, resultSplit5);
        newList.add(result6);

            return String.valueOf(newList);
        }
    }'''
...