Skip to main content

Регулярни Изрази и Файлове в Java

Задача 1: Намиране и Заместване на Текст

Цел: Напишете програма, която чете файл и замества всички срещания на определен текст с друг текст, използвайки регулярни изрази.
Вход: Файл със съдържание, където думата "старо" трябва да бъде заменена с "ново".
Изход: Файл с променено съдържание.
Примерен Вход:

Това е старо съдържание. Още старо съдържание.

Примерен Изход:

Това е ново съдържание. Още ново съдържание.

Задача 2: Валидация на Формат на Дата

Цел: Напишете програма, която чете дати от файл и валидира дали те са във формат dd/mm/yyyy, използвайки регулярни изрази.
Вход: Файл с дати.
Изход: Списък на валидни и невалидни дати.
Примерен Вход:

01/01/2020
32/01/2020
15/05/2021

Примерен Изход:

01/01/2020 - Валидна
32/01/2020 - Невалидна
15/05/2021 - Валидна

Задача 3: Четене на Конфигурационен Файл

Цел: Напишете програма, която чете конфигурационен файл и извлича стойности на ключове, форматирани като ключ=стойност.
Вход: Конфигурационен файл.
Изход: Извлечени стойности на ключове.
Примерен Вход:

max_connections=500
log_file_path=/var/log/server.log
db_timeout=30

Примерен Изход:

max_connections: 500
log_file_path: /var/log/server.log
db_timeout: 30

Задача 4: Търсене на Думи с Префикс

Цел: Създайте програма, която използва регулярни изрази, за да намери и изведе всички думи в текстов файл, започващи с определен префикс.
Вход: Текстов файл и префикс.
Изход: Списък на думи, започващи с префикса.
Примерен Вход:

apple
application
banana
appreciate

Примерен Изход:

apple
application
appreciate

Разбира се, продължаваме от 5-та задача:

Задача 5: Генериране на Съдържание на Директория

Цел: Напишете програма, която генерира текстов файл с имената на всички файлове и директории в определена папка.
Вход: Път до папка.
Изход: Текстов файл със списък на файловете и директориите.
Примерен Вход: Папка със следните файлове/директории:

  • document.txt
  • image.jpg
  • backup/
  • script.js
    Примерен Изход (във файл directory_contents.txt):
document.txt
image.jpg
backup/
script.js

Задача 6: Филтриране на Лог Файл

Цел: Напишете програма, която филтрира съдържанието на лог файл, показвайки само редовете, които съдържат определена грешка. Вход: Лог файл.
Изход: Филтрирани редове с грешки.
Примерен Вход:

INFO: Starting application
ERROR: Failed to load configuration
INFO: Application running
ERROR: Null pointer exception

Примерен Изход:

ERROR: Failed to load configuration
ERROR: Null pointer exception

Задача 7: Извличане на URL адреси

Цел: Напишете програма, която извлича всички URL адреси от текстов файл. Вход: Текстов файл с произволен текст, който съдържа URL адреси.
Изход: Списък на всички извлечени URL адреси.
Примерен Вход:

Check out this website: https://www.example.com and this one: http://www.test.com.

Примерен Изход:

https://www.example.com
http://www.test.com

Задача 8: Проверка за Дублиран Текст

Цел: Напишете програма, която проверява текстов файл за наличие на дублиран текст. Вход: Текстов файл.
Изход: Информация за дублирания текст.
Примерен Вход:

Това е текст. Това също е текст. Това е текст.

Примерен Изход:

Дублиран текст: "Това е текст."

Задача 9: Четене и Анализ на CSV Файл

Цел: Напишете програма, която чете CSV файл и анализира данните в него. Вход: CSV файл с данни.
Изход: Анализирани и обработени данни от файла.
Примерен Вход:

Име,Възраст,Град
Иван,34,София
Мария,28,Пловдив

Примерен Изход:

Средна възраст: 31
Брой хора от София: 1
Брой хора от Пловдив: 1

Задача 10: Създаване на Индексен Файл

Цел: Напишете програма, която създава индексен файл с позициите на всички срещания на дадена дума в друг текстов файл. Вход: Текстов файл и дума за търсене.
**Из

ход:** Индексен файл с позиции на думата.
Примерен Вход (файл):

hello world
world hello
hello again

Дума за търсене: hello
Примерен Изход (в индексен файл):

1:0
2:6
3:0

(Форматът е ред:позиция на думата в текста)

Запаметяване на Напредъка на Герой от Игра

За да запаметите напредъка на герой, който е представен като клас във вашата игра, можете да следвате тези стъпки:

  1. Сериализация на Обекта:

    • Използвайте сериализация за да превърнете обекта на героя във формат, който може да бъде записан във файл. В Java, това може да стане с ObjectOutputStream.
    • Примерен код:
      import java.io.FileOutputStream;
      import java.io.IOException;
      import java.io.ObjectOutputStream;

      public class SaveGame {
      public static void saveHero(Hero hero, String filename) {
      try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename))) {
      oos.writeObject(hero);
      } catch (IOException e) {
      e.printStackTrace();
      }
      }
      }
  2. Десериализация за Зареждане на Обекта:

    • За да заредите обекта от файла, използвайте ObjectInputStream за десериализация.
    • Примерен код:
      import java.io.FileInputStream;
      import java.io.IOException;
      import java.io.ObjectInputStream;

      public class LoadGame {
      public static Hero loadHero(String filename) {
      Hero hero = null;
      try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename))) {
      hero = (Hero) ois.readObject();
      } catch (IOException | ClassNotFoundException e) {
      e.printStackTrace();
      }
      return hero;
      }
      }

Уверете се, че класът на героя (например Hero) имплементира интерфейса Serializable. Това е необходимо, за да може обектът да бъде сериализиран и десериализиран.

Тези методи ви позволяват да запазите състоянието на героя във файл и да го заредите отново, когато играта се стартира на по-късен етап.