Как добавить предложение с префиксом и суффиксом в java? - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь прочитать входной файл, содержащий следующее:

input.txt

Hello world. Welcome,
to the java.

И мне нужно добавить предложение с префиксом (BEGIN) и суффикс (END), и результат должен выглядеть следующим образом:

ожидаемый результат:

BEGIN_Hello world_END.BEGIN_ Welcome,
to the java_END.

Ниже приводится моя функция чтения входного файла. Я читаю весь файл и сохраняю его в списке массивов: InputDetails. java

private List<String> readInput = new ArrayList<>();
public void readFile() throws IOException {
   while((inputLine = input.readLine()) != null ) {
      readInput.add(inputLine);
   }
}

//Getter to return input file content
public List<String> getReadInput() {
   return readInput;
}

И ниже мой код для добавления строки с BEGIN и END :

public void process() {
   InputDetails inputD = new InputDetails();
   for(int i=0;i<inputD.getReadInput().size();i++) {
            String sentence = inputD.getReadInput().get(i);
            String splitSentence[] = sentence.split("\\.");
            for(int j=0;j<splitSentence.length;j++) {
                System.out.println(splitSentence[j]);
                splitSentence[j] = "BEGIN_"+splitSentence[j]+"__END";
            }
            sentence = String.join(".",splitSentence);
            inputD.writeToFile(sentence);
        }
}

получение вывода:

BEGIN_SENTENCE__Hello world__END_SENTENCE.BEGIN_SENTENCE__Welcome
to the java.

Примечание: Каждое предложение разделено "." (период) характер. Выходное предложение должно иметь префикс BEGIN_ и суффикс __END. Знак точки не считается частью предложения. И входной файл разделяется одним или несколькими пробелами. Предложение считается завершенным, если в нем есть точка (.). Даже если это означает, что предложение завершается на новой строке (точно так же, как ввод, который я указал выше). Все, позиция специальных символов должна быть сохранена в выводе. Также может быть пробел между точкой (.) Или запятой (,) и словом. , например: java. или добро пожаловать,

Кто-нибудь может помочь мне это исправить? Спасибо

1 Ответ

1 голос
/ 06 августа 2020

Во-первых, вам нужно объединить ввод списка строк в одну строку. Затем вы можете использовать метод String.split(), чтобы разбить ввод на части, разделенные символом .. Затем вы можете либо запустить al oop в этом массиве, либо использовать метод потока (как показано ниже) для перебора предложений. В каждой части просто добавьте к предложению требуемые блоки BEGIN_ и _END. Вы можете использовать ручное объединение строк с помощью оператора + или использовать строковый шаблон с String.format() (как показано ниже). Наконец, снова введите разделитель ., используемый для разделения ввода, объединив части обратно в одну строку.

String fullString = String.join("", getReadInput());
Arrays.asList(fullString).split("\\.")).stream()
  .map(s -> String.format("BEGIN_%s_END", s))
  .collect(Collectors.joining("."));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...