kivok94
kivok94

Reputation: 303

Comparing length of paths

I'm trying to keep only closest paths, I made code count occurrence of slashes and I got the result:

html/body/div/header/div/div/a/span = 7
html/body/div/div/div/div/div/div/div/div/div/h2 = 11
html/body/div/div/div/table/tbody/tr/td/ul/li/a = 11
html/body/div/div/div/table/tbody/tr/td/ul/li/a/h1 = 12
html/body/div/div/div/div/table/tbody/tr/td/a/span = 11
html/body/div/div/div/div/table/tbody/tr/td/a/span/h1 = 12
html/body/div/div/div/div/table/tbody/tr/td/a/a/span/h1 = 13

I want by the end keep only paths which are near of each others, it must return something like this:

html/body/div/div/div/div/div/div/div/div/div/h2 = 11
html/body/div/div/div/table/tbody/tr/td/ul/li/a = 11
html/body/div/div/div/table/tbody/tr/td/ul/li/a/h1 = 12
html/body/div/div/div/div/table/tbody/tr/td/a/span = 11
html/body/div/div/div/div/table/tbody/tr/td/a/span/h1 = 12
html/body/div/div/div/div/table/tbody/tr/td/a/a/span/h1 = 13 

I start with this Java code:

ArrayList<String> list_input = new ArrayList();
        list_input.add("");

        list_input.add("html/body/div/header/div/div/a/span");
        list_input.add("html/body/div/div/div/div/div/div/div/div/div/h2");
        list_input.add("html/body/div/div/div/table/tbody/tr/td/ul/li/a");
        list_input.add("html/body/div/div/div/table/tbody/tr/td/ul/li/a/h1");
        list_input.add("html/body/div/div/div/div/table/tbody/tr/td/a/span");
        list_input.add("html/body/div/div/div/div/table/tbody/tr/td/a/span/h1");
        list_input.add("html/body/div/div/div/div/table/tbody/tr/td/a/a/span/h1");

        for (int i = 0; i < list_input.size(); i++) {
            String line = (String) list_input.get(i);

            int count_nodes = line.length() - line.replace("/", "").length();
            System.out.println(line + " = " + count_nodes);

        }

Would someone help me to achieve this result?

Upvotes: 0

Views: 38

Answers (2)

Gregory Prescott
Gregory Prescott

Reputation: 574

You can try this to count:

String[] temp = line.split("/");
int count = temp.length;

Edited:

String line = (String)list_input.get(0);
int min = line.split("/").length;

for (int i = 1; i < list_input.size(); i++) {
    String line = (String)list_input.get(i);

    int count = line.split("/").length;
    if (count < min)
        min = count;
}

Upvotes: 2

Ahmed Hashim
Ahmed Hashim

Reputation: 264

for(String str: list_input){
            System.out.println(str.split("/").length);
}

Upvotes: 0

Related Questions