Czym są zakończenia linii?

Zakończenie linii (zwane również newline'em lub sekwencją end-of-line) to specjalny znak lub para znaków, która oznacza, gdzie kończy się jedna linia tekstu i zaczyna się następna. Istnieją trzy odrębne konwencje w różnych systemach operacyjnych: LF (\n, pojedynczy znak linefeed), CRLF (\r\n, powrót karetki następowany linefeed'em) i CR (\r, samodzielny powrót karetki).

Różnica pochodzi z wczesnych czasów informatyki. Maszyny do pisania wymagały dwóch fizycznych kroków, aby rozpocząć nową linię — przesunięcia karetki z powrotem na początek (CR) i przesunięcia papieru o jedną linię (LF). Systemy Unix przyjęły sam LF w latach 70., podczas gdy MS-DOS i późniejszy Windows zachowały pełną sekwencję CR+LF. Klasyczny Mac OS (przed OS X) używał samego CR, chociaż nowoczesny macOS podąża za konwencją Unix LF.

Mieszane zakończenia linii są powszechne w plikach, które były edytowane na wielu platformach, przesyłane między systemami lub łączone z różnych źródeł. Mogą powodować subtelne błędy w skryptach, narzędziach do budowania i systemach kontroli wersji.

Opis narzędzia

To narzędzie analizuje tekst lub plik i wykrywa, które typy zakończeń linii są obecne. Liczy każdy typ osobno — CRLF, LF i CR — i raportuje ogólny styl zakończenia linii (w tym czy plik ma mieszane zakończenia). Zapewnia również podstawowe statystyki linii: całkowitą liczbę linii, najdłuższą linię, najkrótszą linię i średnią długość linii.

Funkcje

  • Wykrywa wszystkie trzy typy zakończeń linii: CRLF (Windows), LF (Unix/macOS) i CR (klasyczny Mac)
  • Identyfikuje mieszane zakończenia linii i oznacza dominujący styl
  • Akceptuje zarówno wklejony tekst za pośrednictwem edytora kodu, jak i przesłane pliki w dowolnym formacie tekstowym

Jak to działa

Sekwencje CRLF (\r\n) są najpierw wykrywane i liczone za pomocą dopasowania regex. Dopasowane pary są następnie usuwane z ciągu znaków przed osobnym liczeniem samodzielnych znaków LF (\n) i CR (\r). Zapobiega to liczeniu pojedynczego \r\n zarówno jako CR, jak i LF. Statystyki linii są wyprowadzane przez podzielenie oryginalnego tekstu na wszystkie trzy wzorce zakończeń linii.