Удаление одного и нескольких пробелов из текстового файла Java, но он не должен объединять все строки в текстовом файле - PullRequest
1 голос
/ 21 мая 2019

Считайте, что в текстовом файле есть n строк, дадим, например, 4 строки.

Ввод из файла:

A B C D E

F G H I J K

L M N O P

Q R S T

Ожидаемый выходной файл:

ABCDE

FGHIJK

LMNOP

QRST

Вывод, который мне удается произвести:

АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШ

Ожидаемый результат должен отображаться, как показано ниже, без пробелов между словами или между строками.

Ответы [ 3 ]

0 голосов
/ 21 мая 2019

Обратите внимание на метод String # replaceAll и класс Pattern . Вы можете использовать regex , чтобы избавиться от пробелов:

System.out.println("A B C D E".replaceAll("\\s", ""));  // ABCDE

, где

\ s Пробельный символ: [\ t \ n \ x0B \ f \ r]

Что вы можете сделать, это перебрать каждую строку и удалить пробелы, используя приведенный выше код. Надеюсь, это поможет.

0 голосов
/ 21 мая 2019

Прежде всего, исходя из вашей проблемы, было бы очень полезно, если бы вы могли читать построчно.К счастью, с помощью реализации Streams в Java-8 вы можете сделать это!

Метод добавит каждую строку файла как String в ArrayList<String>.

static ArrayList<String> readFileText (String filename){

    //ArrayList to hold all the lines
    ArrayList<String> lines = null;
    //Get lines of text (Strings) as a stream
    try (Stream<String> stream = Files.lines(Paths.get(filename))){
        // convert stream to a List-type object
        lines = (ArrayList<String>)stream.collect(Collectors.toList());
    }
    catch (IOException ioe){
        System.out.println("\nCould not read lines of text from the file.");
    }
    catch (SecurityException se){
        System.out.println("Could not read the file provided." + 
          "Please check if you have permission to access it.");
    }

    return lines;
}

Используя вышеописанный метод, вам удастся добавить каждую строку из текстового файла, как String в массиве, но нам все еще нужно удалить пробелы изтеперь каждая строка.

Итак, очень упрощенный способ сделать это - написать выходной файл следующим методом:

static void writeFileText (String filename, ArrayList<String> linesOfText){
        // Specify file location and name
        Path file = Paths.get(filename);
        // StringBuilder will be used to create ONE string of text
        StringBuilder sb = new StringBuilder();
        // Iterate over the list of strings and append them 
        // to string-builder with a 'new line' carriage return.
        for( String line : linesOfText){
            line.replaceAll(" ", ""); // Replace all whitespace with empty string
            sb.append(line).append("\n");
        }
        // Get all bytes of produced string and instantly write them to the file.
        byte[] bytes = sb.toString().getBytes();
        // Write to file
        try{
            Files.write(file, bytes);
        }
        catch(IOException ioe){
            System.out.println("\nCould not write to file \""+filename+"\".);
        }

}

Тогда ваш основной метод будет иметь длину всего 2 строки(учитывая, что вы просто решили проблему, которую отправили, и не более того):

public static void main(String[] args){
    ArrayList<String> lines = Class.readFileText("input.txt");
    Class.writeFileText("output.txt", lines);
}

Здесь Class относится к имени класса, в котором находятся статические методы.

Вышеуказанные методы были взяты из этого репозитория GitHub.

0 голосов
/ 21 мая 2019

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

  1. Создать пустую текстовую переменную

  2. Присвойте этой переменной текущую строку, которую вы прочитали, затем примените функцию или метод удаления пробелов к этой переменной.

  3. Теперь объедините эту переменную следующим образом:

    varaible + = "\ r \ n"

это добавит возврат к новой строке для каждой строки, которую вы удалили ее пробелы

  1. вот и все.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...