Advertisement
jaVer404

level19.lesson10.bonus03 (dep_dep test)

May 6th, 2016
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.52 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 xml:lang="en" lang="en"><b><span>Turanga Leela</span></b></span>
  17. <span>Turanga Leela</span>
  18. <span>Super</span>
  19. <span>girl</span>
  20.  
  21. Шаблон тега:
  22. <tag>text1</tag>
  23. <tag text2>text1</tag>
  24. <tag
  25. text2>text1</tag>
  26.  
  27. text1, text2 могут быть пустыми
  28. */
  29.  
  30. import java.io.BufferedReader;
  31. import java.io.FileReader;
  32. import java.io.IOException;
  33. import java.io.InputStreamReader;
  34. import java.util.Iterator;
  35. import java.util.Map;
  36. import java.util.TreeMap;
  37.  
  38. public class Solution {
  39.     public static void main(String[] args) {
  40.         BufferedReader readName = null;
  41.         try
  42.         {
  43.             //readName = new BufferedReader(new InputStreamReader(System.in));//add after test
  44.             //String fileName = readName.readLine();//add after test
  45.             String myTag = "span";//DELETE after test
  46.             String fileName = "d:\\Test_files\\Input.html";//DELETE after test
  47.             String openTag = String.format("%s",myTag);//replace myTag with args[0]
  48.             //String closeTag = String.format("</%s>",myTag);
  49.             String fileText = fileToString(fileName);
  50.             TreeMap<Integer, String>myTags = new TreeMap<>();
  51.             addOpenTags(fileText,openTag,myTags);
  52.             addCloseTags(fileText,openTag,myTags);
  53. /*            for (Map.Entry<Integer,String>entry : myTags.entrySet()) {
  54.                 System.out.println(entry.getKey()+" "+entry.getValue());
  55.             }*/
  56.             fuckingPrinter(myTags,fileText);
  57.         }
  58.         catch (Exception e) {}
  59.     }
  60.  
  61.     public static String fileToString (String fileToRead) {
  62.         StringBuilder contentBuilder = new StringBuilder();
  63.         try
  64.         {
  65.             BufferedReader in = new BufferedReader(new FileReader(fileToRead ));
  66.             String str;
  67.             while ((str=in.readLine())!=null) {
  68.                 contentBuilder.append(str);
  69.             }
  70.             in.close();
  71.         }
  72.         catch (IOException e)
  73.         {
  74.         }
  75.         return contentBuilder.toString();
  76.     }
  77.  
  78.     public static void addOpenTags (String someText, String toFind, TreeMap<Integer,String> smTg)
  79.     {
  80.         int lastIndex = 0;
  81.         String temp;
  82.         while (lastIndex!=-1)
  83.         {
  84.             lastIndex = someText.indexOf(String.format("<%s",toFind),lastIndex);
  85.             if (lastIndex != -1)
  86.             {
  87.                 temp = someText.substring(lastIndex,(someText.indexOf(">",lastIndex))+1);
  88.                 smTg.put(lastIndex,temp);
  89.                 lastIndex += temp.length();
  90.             }
  91.         }
  92.     }
  93.     public static void addCloseTags (String someText, String toFind, TreeMap<Integer,String> smTg)
  94.     {
  95.         int lastIndex = 0;
  96.         String temp;
  97.         while (lastIndex!=-1)
  98.         {
  99.             lastIndex = someText.indexOf(String.format("</%s>",toFind),lastIndex);
  100.             if (lastIndex != -1)
  101.             {
  102.                 temp = someText.substring(lastIndex,(someText.indexOf(">",lastIndex))+1);
  103.                 smTg.put(lastIndex+temp.length()-1,temp);
  104.                 lastIndex += temp.length();
  105.             }
  106.         }
  107.     }
  108.  
  109.     public static void fuckingPrinter (TreeMap<Integer,String>treeMap,String allText) {
  110.         Iterator it1 = treeMap.entrySet().iterator();
  111.         Iterator it2 = treeMap.entrySet().iterator();
  112.         String temp1;
  113.  
  114.         String temp2;
  115.         int counter=0;
  116.         while (it1.hasNext()) {
  117.             Map.Entry pair1 = (Map.Entry)it1.next();
  118.             temp1= (pair1.getValue().toString()).substring(0,2);
  119.             System.out.println("Main loop 1 = "+temp1);
  120.             while (it2.hasNext()) {
  121.                 Map.Entry pair2 = (Map.Entry)it2.next();
  122.                 temp2=(pair2.getValue().toString()).substring(0,2);
  123.                 System.out.println("Main loop 2 = "+temp2);
  124.  
  125.                 if (temp2.equals("</")) {
  126.                     counter--;
  127.                     System.out.println("Counter " +counter);
  128.                     if (counter==0) {
  129.                         System.out.println(allText.substring((int)pair1.getKey(),(int)pair2.getKey()+1));
  130.                         it1.remove();
  131.                         it2.remove();
  132.                     }
  133.                 }
  134.                 else if (temp2.equals("<s")) {
  135.                     counter++;
  136.                     System.out.println("Counter " +counter);
  137.                 }
  138.             }
  139.         }
  140.     }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement