Advertisement
mamant38

извлекает из строки числа

May 21st, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.36 KB | None | 0 0
  1. package com.javarush.task.task19.task1913;
  2.  
  3. /*
  4. В методе main подмени объект System.out написанной тобой ридер-оберткой по аналогии с лекцией.
  5. Твоя ридер-обертка должна выводить только цифры.
  6. Вызови готовый метод printSomething(), воспользуйтесь testString.
  7. Верни переменной System.out первоначальный поток.
  8. Выведи модифицированную строку в консоль.
  9.  
  10. Пример вывода:
  11. 12345678
  12.  
  13.  
  14. Требования:
  15. 1. Класс Solution должен содержать класс TestString.
  16. 2. Класс Solution должен содержать публичное статическое поле testString типа TestString, которое сразу проинициализировано.
  17. 3. Класс TestString должен содержать публичный void метод printSomething().
  18. 4. Метод printSomething() класса TestString должен выводить на экран строку "it's 1 a 23 text 4 f5-6or7 tes8ting".
  19. 5. Метод main(String[] args) класса Solution должен создавать поток PrintStream (используй PrintStream c параметром конструктора ByteArrayOutputStream).
  20. 6. Метод main(String[] args) класса Solution должен подменять и восстанавливать поток вывода в консоль объекта System.out.
  21. 7. Метод main(String[] args) класса Solution должен вызывать метод printSomething(),объекта testString.
  22. 8. Метод main(String[] args) класса Solution должен модифицировать строку выведенную методом printSomething() согласно заданию, и выводить её в консоль.
  23. */
  24.  
  25. import java.io.ByteArrayInputStream;
  26. import java.io.ByteArrayOutputStream;
  27. import java.io.PrintStream;
  28.  
  29. public class Solution {
  30.     public static TestString testString = new TestString();
  31.  
  32.     public static void main(String[] args) {
  33.         PrintStream printStream = System.out;
  34.  
  35.         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  36.         //Создаем динамический массив
  37.         PrintStream stream = new PrintStream(outputStream);
  38.         //Устанавливаем его как текущий System.out
  39.         System.setOut(stream);
  40.  
  41.         //Вызываем функцию, которая ничего не знает о наших манипуляциях
  42.         testString.printSomething();
  43.  
  44.         //Преобразовываем записанные в наш ByteArray данные в строку
  45.         String result = outputStream.toString();
  46.  
  47.         //Возвращаем все как было
  48.         System.setOut(printStream);
  49.  
  50.         //разворачиваем строку
  51.         String s2 = result.replaceAll("\\D+",""); // извлекает из строки числа
  52.         //выводим ее в консоль
  53.         System.out.println(s2);
  54.     }
  55.  
  56.     public static class TestString {
  57.         public void printSomething() {
  58.             System.out.println("it's 1 a 23 text 4 f5-6or7 tes8ting");
  59.         }
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement