Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.javarush.test.level19.lesson10.bonus03;
- /* Знакомство с тегами
- Считайте с консоли имя файла, который имеет HTML-формат
- Пример:
- Info about Leela <span xml:lang="en" lang="en"><b><span>Turanga Leela
- </span></b></span><span>Super</span><span>girl</span>
- Первым параметром в метод main приходит тег. Например, "span"
- Вывести на консоль все теги, которые соответствуют заданному тегу
- Каждый тег на новой строке, порядок должен соответствовать порядку следования в файле
- Количество пробелов, \n, \r не влияют на результат
- Файл не содержит тег CDATA, для всех открывающих тегов имеется отдельный закрывающий тег, одиночных тегов нету
- Тег может содержать вложенные теги
- Пример вывода:
- <span xml:lang="en" lang="en"><b><span>Turanga Leela</span></b></span>
- ??<span xml:lang="en" lang="en"><b><span>Turanga Leela</span></b></span>
- <span>Turanga Leela</span>
- <span>Super</span>
- <span>girl</span>
- Шаблон тега:
- <tag>text1</tag>
- <tag text2>text1</tag>
- <tag
- text2>text1</tag>
- text1, text2 могут быть пустыми
- */
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.TreeMap;
- public class Solution {
- public static void main(String[] args) {
- BufferedReader readName = null;
- try
- {
- //readName = new BufferedReader(new InputStreamReader(System.in));//add after test
- //String fileName = readName.readLine();//add after test
- String myTag = "span";//DELETE after test
- String fileName = "d:\\Test_files\\Input.html";//DELETE after test
- String openTag = String.format("%s",myTag);//replace myTag with args[0]
- //String closeTag = String.format("</%s>",myTag);
- String fileText = fileToString(fileName);
- TreeMap<Integer, String>myTags = new TreeMap<>();
- addOpenTags(fileText,openTag,myTags);
- addCloseTags(fileText,openTag,myTags);
- /* for (Map.Entry<Integer,String>entry : myTags.entrySet()) {
- System.out.println(entry.getKey()+" "+entry.getValue());
- }*/
- fuckingPrinter(myTags,fileText);
- }
- catch (Exception e) {}
- }
- public static String fileToString (String fileToRead) {
- StringBuilder contentBuilder = new StringBuilder();
- try
- {
- BufferedReader in = new BufferedReader(new FileReader(fileToRead ));
- String str;
- while ((str=in.readLine())!=null) {
- contentBuilder.append(str);
- }
- in.close();
- }
- catch (IOException e)
- {
- }
- return contentBuilder.toString();
- }
- public static void addOpenTags (String someText, String toFind, TreeMap<Integer,String> smTg)
- {
- int lastIndex = 0;
- String temp;
- while (lastIndex!=-1)
- {
- lastIndex = someText.indexOf(String.format("<%s",toFind),lastIndex);
- if (lastIndex != -1)
- {
- temp = someText.substring(lastIndex,(someText.indexOf(">",lastIndex))+1);
- smTg.put(lastIndex,temp);
- lastIndex += temp.length();
- }
- }
- }
- public static void addCloseTags (String someText, String toFind, TreeMap<Integer,String> smTg)
- {
- int lastIndex = 0;
- String temp;
- while (lastIndex!=-1)
- {
- lastIndex = someText.indexOf(String.format("</%s>",toFind),lastIndex);
- if (lastIndex != -1)
- {
- temp = someText.substring(lastIndex,(someText.indexOf(">",lastIndex))+1);
- smTg.put(lastIndex+temp.length()-1,temp);
- lastIndex += temp.length();
- }
- }
- }
- public static void fuckingPrinter (TreeMap<Integer,String>treeMap,String allText) {
- Iterator it1 = treeMap.entrySet().iterator();
- Iterator it2 = treeMap.entrySet().iterator();
- String temp1;
- String temp2;
- int counter=0;
- while (it1.hasNext()) {
- Map.Entry pair1 = (Map.Entry)it1.next();
- temp1= (pair1.getValue().toString()).substring(0,2);
- System.out.println("Main loop 1 = "+temp1);
- while (it2.hasNext()) {
- Map.Entry pair2 = (Map.Entry)it2.next();
- temp2=(pair2.getValue().toString()).substring(0,2);
- System.out.println("Main loop 2 = "+temp2);
- if (temp2.equals("</")) {
- counter--;
- System.out.println("Counter " +counter);
- if (counter==0) {
- System.out.println(allText.substring((int)pair1.getKey(),(int)pair2.getKey()+1));
- it1.remove();
- it2.remove();
- }
- }
- else if (temp2.equals("<s")) {
- counter++;
- System.out.println("Counter " +counter);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement