Нет, единственная пара CR-LF в конце файла завершает последнюю непустую строку, а не образует новую пустую; а вот CR-LF-CR-LF — это уже пустая строка в конце файла.AleXH wrote:Если я правильно понимаю, то это баг - 0x0D0A в конце файла должны интерпретироваться как пустая строка, но этого не происходит - за пустую строку считаются только 0x0D0A0D0A.
Меряемся концами строк: terminator vs separator
- HaRT
- Moderator
- Posts: 10822
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Меряемся концами строк: terminator vs separator
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Добавлена ссылка на исходную тему
Reason: Добавлена ссылка на исходную тему
Фар есть инструмент, а не нянька. © 2009 DrKnS
Re: Regular Expression Search and Replace (RESearch)
HaRT
Не вижу логики - если стоит <CR><LF>ля-ляля<EOF> никто же не будет отрицать, что "ля-ляля" символы последней строки? - именно так это выглядит в редакторе. Но важнее то, что Line Feed по определению создаёт новую строку, так как все символы за ним есть символы новой строки. Стало быть <CR><LF><EOF> - пустая строка.
Не вижу логики - если стоит <CR><LF>ля-ляля<EOF> никто же не будет отрицать, что "ля-ляля" символы последней строки? - именно так это выглядит в редакторе. Но важнее то, что Line Feed по определению создаёт новую строку, так как все символы за ним есть символы новой строки. Стало быть <CR><LF><EOF> - пустая строка.
- HaRT
- Moderator
- Posts: 10822
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: Regular Expression Search and Replace (RESearch)
AleXH
Да вы, батенька, теоретик. Что ж, извольте:
CR-LF — это завершение строки (line terminator), а не разделитель строк (lines separator). Строка без терминатора неполноценная (gcc, например, на такую строку выдаёт предупреждение). К счастью, в одном файле такая недо-строка может быть только одна.
Да и из чисто практических соображений чрезвычайно неудобно считать CR-LF-EOL пустой строкой.
Да вы, батенька, теоретик. Что ж, извольте:
CR-LF — это завершение строки (line terminator), а не разделитель строк (lines separator). Строка без терминатора неполноценная (gcc, например, на такую строку выдаёт предупреждение). К счастью, в одном файле такая недо-строка может быть только одна.
Да и из чисто практических соображений чрезвычайно неудобно считать CR-LF-EOL пустой строкой.
Фар есть инструмент, а не нянька. © 2009 DrKnS
-
- Posts: 6819
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 528 times
Re: Regular Expression Search and Replace (RESearch)
В редакторе Фара строка рассматривается как последовательность StringText и StringEOL. При замене в редакторе пустой строкой считается сочетание пустого StringText и непустого StringEOL. Следовательно, ля-ля<CR><LF><EOF> пустой строки не содержит.
- John Doe
- Бюрократ
- Posts: 13807
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
Re: Regular Expression Search and Replace (RESearch)
...но выглядит в редакторе фара именно как пустая строка.
Re: Regular Expression Search and Replace (RESearch)
HaRT
Терминатор говорите? Я как-то всю жизнь полагал, что возвращают каретку в начало для того, что бы начать новую строку от левого поля, а не для того, чтобы закончить предыдущую ))) - для этого переводить каретку нет необходимости. В качестве терминатора <CR> стал использоваться при вводе текста в терминале, но ввод текста, и текстовой файл это разные вещи, мы же говорим о замене в текстовом файле.
Что считает FAR за пустую строку, и как он её определяет это уже к разработчикам. <EOF> включает в себя ещё и функцию <EOL>, и то что лежит между <LF> и <EOL> есть строка, и если она пуста, значит она пуста.
Терминатор говорите? Я как-то всю жизнь полагал, что возвращают каретку в начало для того, что бы начать новую строку от левого поля, а не для того, чтобы закончить предыдущую ))) - для этого переводить каретку нет необходимости. В качестве терминатора <CR> стал использоваться при вводе текста в терминале, но ввод текста, и текстовой файл это разные вещи, мы же говорим о замене в текстовом файле.
Что считает FAR за пустую строку, и как он её определяет это уже к разработчикам. <EOF> включает в себя ещё и функцию <EOL>, и то что лежит между <LF> и <EOL> есть строка, и если она пуста, значит она пуста.
- HaRT
- Moderator
- Posts: 10822
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: Regular Expression Search and Replace (RESearch)
Чушь!AleXH wrote:<EOF> по-сути включает в себя ещё и функцию <EOL>
Как я уже отметил, неполноценная строка. Кто такие использует, тот ССЗБ.AleXH wrote:то что лежит между <LF> и <EOL> есть строка
Фар есть инструмент, а не нянька. © 2009 DrKnS
Re: Regular Expression Search and Replace (RESearch)
Почему чушь? Вы хотите сказать, что конец текстового файла не подразумевает одновременный и конец строки?
Кто такие супер-супер-зе-бест я не знаю Но откуда произошли понятия <CR><LF> я помню, а вы замещаете исконный смысл понятий ересью.
Кто такие супер-супер-зе-бест я не знаю Но откуда произошли понятия <CR><LF> я помню, а вы замещаете исконный смысл понятий ересью.
Re: Regular Expression Search and Replace (RESearch)
Я собственно не понимаю о чем спор.
Считается ли строкой то что между <LF> и <EOF>?
Да, считается. Колорер ее красит? Красит. Значит фар говорит, что строка есть, более того, дает с ней что-то делать. Что эта строка содержит? Пустоту. Логика подсказывает, что это пустая строка.
Считается ли строкой то что между <LF> и <EOF>?
Да, считается. Колорер ее красит? Красит. Значит фар говорит, что строка есть, более того, дает с ней что-то делать. Что эта строка содержит? Пустоту. Логика подсказывает, что это пустая строка.
-
- Posts: 270
- Joined: Mon 10 Apr, 2006 00:53
- Location: станица Григорополисская
- Has thanked: 147 times
- Contact:
Re: Regular Expression Search and Replace (RESearch)
Не подразумевает.AleXH wrote:Вы хотите сказать, что конец текстового файла не подразумевает одновременный и конец строки?
AleXH wrote:Кто такие супер-супер-зе-бест я не знаю
Тут все помнят. А ежели кто не помнит — умеет пользоваться Wikipedia: Newline, Carriage return, End-of-file.AleXH wrote:Но откуда произошли понятия <CR><LF> я помню, а вы замещаете исконный смысл понятий ересью.
Если следовать Вашей извращённой логике, то «A»+«B\0x0D\0x0A» — это две строки, а не одна.
Re: Regular Expression Search and Replace (RESearch)
Скажу вам по очень большому секрету, что это не одна строка. И даже не две. А три.AlexII wrote:Если следовать Вашей извращённой логике, то «A»+«B\0x0D\0x0A» — это две строки, а не одна.
- Attachments
-
- 123.7z
- (114 Bytes) Downloaded 120 times
Re: Regular Expression Search and Replace (RESearch)
По всей видимости она пустая строка ), по крайней мере так написано в статусной строке редактора - "1/1"DrKnS wrote:А вот в пустом файле (ну или в пустом редакторе) - сколько строк?
Re: Regular Expression Search and Replace (RESearch)
Открыв в ЛЮБОМ текстовом редакторе текстовой файл из трёх байтов "310D0A", и нажав курсор вниз мы видим, что он встал на новую строку, но она пока ещё пуста. Удалив последние 0x0D0A, и оставив только 0x31, мы видим, что курсор вниз уже не сдвигается, так как новая строка ещё не создана.
Last edited by AleXH on Tue 27 Sep, 2011 10:58, edited 3 times in total.