Окончания строки отличаются между Windows и Linux? [закрытый]

18
задан Sled 18 July 2018 в 19:39
поделиться

7 ответов

Вы попытались удалить все скрытые символы, но '\n'. Каков regex Ваше использование для разделения строк?

0
ответ дан 21 October 2019 в 04:30
поделиться

Теперь я помню, почему я использую BufferedReader в этих случаях... :-)

0
ответ дан 21 October 2019 в 04:30
поделиться

От Википедия :

  • погонный фут: Multics, Unix и подобные Unix системы (GNU / Linux, AIX, Xenix, Mac OS X , FreeBSD, и т.д.), BeOS, Amiga, RISC ОС и другие
  • CR+LF: DEC RT-11 и большая часть другого раннего не-Unix, Ose не-IBM, CP/M, MP/M, DOS, ОС/2, Microsoft Windows, Symbian ОС
  • CR: машины Commodore, семейство Apple II, Mac OS до версии 9 и ОС 9

я перевожу это в эти окончания строки в общем :

  • Windows: '\r\n'
  • Mac (ОС 9-): '\r'
  • Mac (ОС 10 +): '\n'
  • Unix/Linux: '\n'

необходимо заставить сканер/синтаксический анализатор обработать версию Unix, также.

47
ответ дан 30 November 2019 в 05:59
поделиться

Можно получить стандартную строку, заканчивающуюся для текущей ОС от:

System.getProperty("line.separator")
10
ответ дан 30 November 2019 в 05:59
поделиться

Сканер повреждается в пробелах.

РЕДАКТИРОВАНИЕ : Учебные состояния Java 'Сканирования':

По умолчанию, сканер использует пробел для разделения маркеров. (Пробельные символы включают пробелы, вкладки и разделители строки. Для полного списка обратитесь к документации для Character.isWhitespace.)

можно использовать useDelimiter () метод для изменения этих значений по умолчанию.

4
ответ дан 30 November 2019 в 05:59
поделиться

Это работает на меня на Ubuntu

import java.util.Scanner;
import java.io.File;

public class test {
  public static void main(String[] args) {
    try {
      Scanner sc = new Scanner(new File("/etc/passwd"));
      String l;
      while( ( l = sc.nextLine() ) != null ) {
        String[] p = l.split(":");
        for(String pi: p) System.out.print( pi + "\t:\t" );
        System.out.println();
      }
    } catch(Exception e) { e.printStackTrace(); }
  }
}
1
ответ дан 30 November 2019 в 05:59
поделиться

Почему бы не использовать LineNumberReader?

, Если Вы не можете сделать этого, на что похож код?

единственная разница, о которой я могу думать, - то, что Вы разделяете на плохом regex и что при редактировании файла сами Вы получаете новые строки DOS, которые так или иначе передают Ваш regex.

однако, для чтения вещей одна строка за один раз, на излишество походит использовать Scanner.

, Конечно, то, почему Вы анализируете /etc/passwd, является дырой другое обсуждение :)

0
ответ дан 30 November 2019 в 05:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: