jaVer404

level19.lesson10.bonus03(second night debuild)

May 6th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.91 KB | None | 0 0
  1. package com.javarush.test.level19.lesson10.bonus03;
  2.  
  3. /* Знакомство с тегами
  4. Считайте с консоли имя файла, который имеет HTML-формат
  5. Пример:
  6. Info about Leela <span xml:lang="en" lang="en"><b><span>Turanga Leela
  7. </span></b></span><span>Super</span><span>girl</span>
  8. Первым параметром в метод main приходит тег. Например, "span"
  9. Вывести на консоль все теги, которые соответствуют заданному тегу
  10. Каждый тег на новой строке, порядок должен соответствовать порядку следования в файле
  11. Количество пробелов, \n, \r не влияют на результат
  12. Файл не содержит тег CDATA, для всех открывающих тегов имеется отдельный закрывающий тег, одиночных тегов нету
  13. Тег может содержать вложенные теги
  14. Пример вывода:
  15. <span xml:lang="en" lang="en"><b><span>Turanga Leela</span></b></span>
  16. <span>Turanga Leela</span>
  17. <span>Super</span>
  18. <span>girl</span>
  19.  
  20. Шаблон тега:
  21. <tag>text1</tag>
  22. <tag text2>text1</tag>
  23. <tag
  24. text2>text1</tag>
  25.  
  26. text1, text2 могут быть пустыми
  27. */
  28.  
  29. import java.io.BufferedReader;
  30. import java.io.FileReader;
  31. import java.io.IOException;
  32. import java.io.InputStreamReader;
  33. import java.util.ArrayList;
  34. import java.util.Iterator;
  35. import java.util.Map;
  36. import java.util.TreeMap;
  37. import java.util.regex.*;
  38.  
  39. public class Solution {
  40.     public static void main(String[] args) {
  41.         BufferedReader readName = null;
  42.         try
  43.         {
  44.             //readName = new BufferedReader(new InputStreamReader(System.in));//add after test
  45.             //String fileName = readName.readLine();//add after test
  46.             String myTag = "span";//DELETE after test
  47.             String fileName = "d:\\Test_files\\Input.html";//DELETE after test
  48.             String openTag = String.format("%s",myTag);//replace myTag with args[0]
  49.             //String closeTag = String.format("</%s>",myTag);
  50.             String fileText = fileToString(fileName);
  51.             TreeMap<Integer, String>myTags = new TreeMap<>();
  52.             addOpenTags(fileText,openTag,myTags);
  53.             addCloseTags(fileText,openTag,myTags);
  54. /*            for (Map.Entry<Integer,String>entry : myTags.entrySet()) {
  55.                 System.out.println(entry.getKey()+" "+entry.getValue());
  56.             }*/
  57.             makeSomePorn(myTags,fileText,openTag);
  58.         }
  59.         catch (Exception e) {}
  60.     }
  61.  
  62.     public static String fileToString (String fileToRead) {
  63.         StringBuilder contentBuilder = new StringBuilder();
  64.         try
  65.         {
  66.             BufferedReader in = new BufferedReader(new FileReader(fileToRead ));
  67.             String str;
  68.             while ((str=in.readLine())!=null) {
  69.                 contentBuilder.append(str);
  70.             }
  71.             in.close();
  72.         }
  73.         catch (IOException e)
  74.         {
  75.         }
  76.         return contentBuilder.toString();
  77.     }
  78.  
  79.     public static void addOpenTags (String someText, String toFind, TreeMap<Integer,String> smTg)
  80.     {
  81.         int lastIndex = 0;
  82.         String temp;
  83.         while (lastIndex!=-1)
  84.         {
  85.             lastIndex = someText.indexOf(String.format("<%s",toFind),lastIndex);
  86.             if (lastIndex != -1)
  87.             {
  88.                 temp = someText.substring(lastIndex,(someText.indexOf(">",lastIndex))+1);
  89.                 smTg.put(lastIndex,temp);
  90.                 lastIndex += temp.length();
  91.             }
  92.         }
  93.     }
  94.  
  95.     public static void addCloseTags (String someText, String toFind, TreeMap<Integer,String> smTg)
  96.     {
  97.         int lastIndex = 0;
  98.         String temp;
  99.         while (lastIndex!=-1)
  100.         {
  101.             lastIndex = someText.indexOf(String.format("</%s>",toFind),lastIndex);
  102.             if (lastIndex != -1)
  103.             {
  104.                 temp = someText.substring(lastIndex,(someText.indexOf(">",lastIndex))+1);
  105.                 smTg.put(lastIndex+temp.length()-1,temp);
  106.                 lastIndex += temp.length();
  107.             }
  108.         }
  109.     }
  110.  
  111.     public static void makeSomePorn (TreeMap<Integer,String>myActees, String text, String tager) {
  112.         Iterator iter1 = myActees.entrySet().iterator();
  113.         Iterator iter2 = myActees.entrySet().iterator();
  114.         String temp1;
  115.         int counter=0;
  116.         int starter=0;
  117.         while (iter1.hasNext()) {
  118.             Map.Entry pair1 = (Map.Entry)iter1.next();
  119.             temp1=pair1.getValue().toString();
  120.             //System.out.println("This is tag: "+ temp1);
  121.             if (temp1.substring(0,2).equals(String.format("<%s",tager).substring(0,2))) {
  122.                 System.out.println("Holly Shit");
  123.                 String temp2;
  124.                 starter=(int)pair1.getKey();
  125.                 System.out.println("Starter" + starter);
  126.                 while (iter2.hasNext()) {
  127.                     Map.Entry pair2 = (Map.Entry)iter2.next();
  128.                     temp2=pair2.getValue().toString();
  129.                     if (temp2.substring(0,2).equals(String.format("<%s",tager).substring(0,2))) {
  130.                         counter++;
  131.                         System.out.println("Second counter " + counter);
  132.                     }
  133.                     else {
  134.  
  135.                         counter--;
  136.                         System.out.println(counter);
  137.                         if (counter==0) {
  138.                             int finish = (int)pair2.getKey();
  139.                             System.out.println(text.substring(starter,finish));
  140.                             iter1.remove();
  141.                             iter2.remove();
  142.                         }
  143.                     }
  144.  
  145.                 }
  146.             }
  147.             else
  148.                 iter1.remove();
  149.         }
  150.     }
  151. }
Add Comment
Please, Sign In to add comment