2016-03-22 2 views
0

Я пытаюсь держать только самые близкие пути, я сделал код счетчика появление слешей и я получил результат:сравнения длина путей

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 

Я хочу, чтобы к концу держать только пути, которые находятся рядом друг другие, он должен вернуть что-то вроде этого:

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 

Я начинаю с этим кодом Java:

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); 

     } 

бы someon e помочь мне достичь этого результата?

Заранее спасибо.

+0

Какой результат? («он должен вернуть что-то вроде этого» не очень точное описание) И как ваш текущий результат отличается от этого? Как вы думаете, в чем проблема? –

+0

i havnt проблема до сих пор, я просто знаю, как я могу получить только ближайшие пути – kivok94

+0

Определите «ближайшие пути». В списке путей, которые вы считаете ближайшими, нет ничего регулярного, кроме того, что их длины находятся в пределах 2 друг от друга. –

ответ

2

Вы можете попробовать это рассчитывать:

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

Отредактировано:

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; 
} 
+0

, но это проблема, сравнивая длину каждого пути с другими и сохраняя только ближайшие . – kivok94

+0

Отредактировано, посмотрите. –

+1

Если у вас уже есть какой-то путь, возьмите за минимальную разницу между «дорожкой» и первым в arraylist, а затем сравните различия –

0
for(String str: list_input){ 
      System.out.println(str.split("/").length); 
} 
Смежные вопросы