nhân vật để trả lại và linefeed
\r
là nhân vật #\return
trong Common Lisp.
\n
là ký tự #\linefeed
trong Lisp thông thường.
Sau đây kết thúc chuỗi "Hello world."
với trả lại và dòng cấp.
(format t "Hello world.~C~C" #\return #\linefeed)
#\newline
là bất kỳ nền tảng nào sử dụng làm bộ phận phân chia. Trên các máy Unix, điều này thường giống như #\linefeed
. Trên các nền tảng khác (Windows, Lisp Machines, ...), điều này có thể khác.
kiểm soát FORMAT
Việc kiểm soát FORMAT
~%
in một dòng mới (!).
Vì vậy
(format t "Hello world.~%")
sẽ in xuống dòng mà hệ điều hành sử dụng. CR hoặc CRLF hoặc LF. Tùy thuộc vào nền tảng này sẽ có một hoặc hai ký tự.
Vì vậy, trên một máy tính Windows của bạn
(format t "Hello world.~C~%" #\return)
có thể thực sự in: #\return
#\return
#\linefeed
. Đó là BA nhân vật và không phải là hai. Windows sử dụng CRLF cho dòng mới. Unix sử dụng LF. Mac OS cũ (trước Mac OS X) và Lisp Machines sử dụng CR cho dòng mới.
Viết CRLF
Nếu bạn thực sự muốn in CRLF, bạn phải làm điều đó một cách rõ ràng.Ví dụ:
(defun crlf (&optional (stream *standard-output*))
(write-char #\return stream)
(write-char #\linefeed stream)
(values))
FORMAT
không có cú pháp đặc biệt cho đầu ra của ký tự trả lại dòng hoặc ký tự xuống dòng.
LINEBREAKS kiểm soát FORMAT
Common Lisp cho phép chuỗi đa dòng. Như vậy chúng ta có thể sử dụng chúng như định dạng điều khiển:
Ở đây bạn có thể thấy rằng các ngắt dòng trong chuỗi điều khiển cũng là trong đầu ra:
CL-USER 77 > (format t "~%first line
second line~%~%")
first line
second line
NIL
Dưới đây là một ví dụ trong đó sự kiểm soát [email protected]
FORMAT giữ linebreak , nhưng xóa khoảng trống trên dòng tiếp theo:
CL-USER 78 > (format t "~%first [email protected]
second line~%~%")
first line
second line
NIL
Trong SBCL 1.0.22, CLISP 2.47 và Clozure CL 1.3 trên Windows: (aref (định dạng nil "~%") 0) trả về # \ Dòng mới. –
@Frank Shearar: và những gì (chiều dài (định dạng nil "~%")) sản xuất? Và nó tạo ra gì khi bạn viết nó vào một tập tin? Tệp này dài bao lâu? –
1, 1 và 1 cho chiều dài. Với (với-mở-tệp (s #p "c: \\ foo.txt": hướng: đầu ra: nếu tồn tại: thay thế) (chuỗi ghi (định dạng nil "~%") s)), SBCL và CCL nhổ ra một tập tin 1 byte chứa \ #Newline. Clisp spat ra một tập tin 1-byte có chứa một # \ Return! –