Помогите с кодом Java

Я написал метод который выводит текст из пастебина, но он выводит мне его введите сюда описание изображения в скобках, как мне сделать, чтобы было без скобок

private static void getPastebin(){
      InputStream in = null;
    try {
      in = (new URL("тут ссылка на пастебин raw")).openStream();
    } catch (MalformedURLException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } 
    BufferedReader r = new BufferedReader(new InputStreamReader(in));
    try {
     
      while ((line = r.readLine()) != null)
       check.add(line); 
      System.out.println(check);
    } catch (IOException e) {
      e.printStackTrace();
    } 
  }

Ответы (3 шт):

Автор решения: Agzam
  1. Вы можете использовать метод substring(int beginIndex, int endIndex) для удаления первого и последнего символа строки:
String str = "[update123]";
System.out.println(str.substring(1, str.length()-1));
  1. Или же Вы можете использовать replaceAll(String regex, String replacement) для удаления всех [ и ]:
String str = "[update123]";
System.out.println(str.replaceAll("\\[", "").replaceAll("\\]", ""));

Вот пример вашего кода с использованием способа №1

private static void getPastebin() {
      InputStream in = null;
    try {
      in = (new URL("тут ссылка на пастебин raw")).openStream();
    } catch (MalformedURLException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } 
    BufferedReader r = new BufferedReader(new InputStreamReader(in));
    try {
     
      while ((line = r.readLine()) != null)
       check.add(line); 
      System.out.println(check.substring(1, check.length()-1));
    } catch (IOException e) {
      e.printStackTrace();
    } 
  }
→ Ссылка
Автор решения: Alex Rudenko

Не совсем понятно, что относится к выводу программы, указанному в скриншоте, и какой текст был прочитан.

Поскольку выводится некая коллекция/список check после чтения строки, то будут выводиться скобки: [update123] значит, что была прочитана единственная строка.

Можно печатать строки либо в процессе чтения:

while ((line = r.readLine()) != null) {
    check.add(line);
    System.out.println(line);
}

либо выводить коллекцию построчно:

check.forEach(System.out::println);
→ Ссылка
Автор решения: Дмитрий

На самом деле в вашем коде есть много проблем, но то, что вы спрашиваете проблемой не является) Все, что вы делаете, легко упрощается до такого вида:

private static void getPastebin() throws IOException {
    try (BufferedReader reader = new BufferedReader(new InputStreamReader(new URL("тут ссылка на пастебин raw").openStream()))) {
        List<String> check = reader.lines().collect(Collectors.toList());
        System.out.println(check);
    }
}

Какие проблемы решаются в данном случае? Объясняю:

  1. все стримы, кроме тех, которые открывает сама система (например, system.in), необходимо закрывать, в противном случае вы получите большие проблемы, ведь это исчерпаемый ресурс и после того, как он будет исчерпан, ваша приложение неизбежно упадет. в приведенном мной случае это решается с помощью конструкции try-with-resources, информацию о которой вы найдете на просторах интернета без особых проблем
  2. принцип кiss никто не отменял, делайте все проще. ведь читаемость кода превыше всего
  3. бессмысленные catch, перехватывающие исключения и ничего не делающие, - плохая практика. какой в этом смысл? ровно также как нет смысла в вызове printStackTrace. в таком случае лучше просто пробросить исключение, легче будет дебажить.
  4. с именованием переменных одной буквой, кроме иитератора в виде "i", необходимо срочно завязывать. Ридер, именованный "r", вызовет подергивание глаза любого адекватного разработчика, ибо это приводит к тому, что ваш код становится нечитаемым.

И последнее... То, что вы считаете проблемой и таковой не является. Вы видите квадратные скобки потому, что при вызове System.out.println вы передаете коллекцию, а ее переопределенный метод toString() добавляет данные скобки. Почему это не является проблемой? Потому, что вы сейчас пытаетесь рассматривать коллекцию как единый String, а не множество String, как это есть на самом деле. Тут вам нужно определиться с тем, что вы хотите получить в итоге. Если это множество элементов, коим и является коллекция, то любые действия с ними будут производится в цикле поочередно для каждого элемента. Если идти таким путем, то для наглядности измените строку кода System.out.println(check); на check.forEach(System.out::println); Если вы хотите получить единую строку , то нужно результат складывать не в коллекцию, а сразу в переменную типа String. для этого измените строку кода List check = reader.lines().collect(Collectors.toList()); на String check = reader.lines().collect(Collectors.joining(" "));

→ Ссылка