2015-02-22 3 views
-2

У меня есть строка, которая, когда она видит \n, должна сломаться. Однако, когда я печатаю его на экране, он фактически показывает \ n как символы.java n печатается, должна прерываться линия?

  1. В моем файле есть строка, такая как q1. как вас зовут? \n a.bob \n b.jim

  2. Я тогда магазин, который приводит в строку, когда ее чтение из файла

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

    q1. как вас зовут?

    a. bob 
    b. jim 
    

Однако все это печатается на одной строке, как именно он находится в файле.

код его чтения из файла и возвращает обратно клиенту

String [] line = new String [10]; 
      try 
      { 
       int i =0; 
       for (i=0;i<=9;i++) 
       { 
        line[i] = ""; 
       } 
       Scanner scanner = new Scanner(new File("questions.txt")); 
       scanner.useDelimiter("Q"); 
       i=0; 
       while (scanner.hasNext()) 
       { 
        line[i] = scanner.next(); 
        //System.out.println("" + line[i]); 
        i++; 
       } 
      } 
return line[0]; //return string back to client 
+3

Вы должны показать нам код. –

+1

Вопросы, требующие помощи по отладке («почему этот код не работает?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и ** кратчайший код, необходимый для его воспроизведения ** в самом вопросе. –

+0

FWIW, ваш исходный файл без \ n строк, присутствующих на самом деле, уже содержит символ новой строки для разделения строк. вы должны взять шестнадцатеричный редактор и посмотреть шестнадцатеричные коды в вашем файле, чтобы доказать это самому себе. – LhasaDad

ответ

0

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

Итак, если вы хотите, чтобы буквальным\n следует интерпретировать как новой строки вашим клиентом, вы должны заменить его перед возвращением в

return line[0].replaceAll("\\\\n", "\n"); 
+0

Ах бриллиант. Никогда не знал, как это работает! благодаря – lecardo

Смежные вопросы