タグ付けされた質問 「characters」

4
現在の文字が文字かどうかを判断する方法
現在の文字が文字(英字)であるかどうか(つまり、[:alpha:]正規表現で構文クラスに属しているかどうか)を判別する方法。以下のような簡単な関数を書きたいと思います: (defun test-letter () (interactive) (if char-after-is-a-letter (message "This is a letter") (message "This is not a letter") ) ) 更新 残念ながら、文字のクラス[:alpha:]と構文クラスの同等性に関する私の仮定は誤っているようです。

4
8進エスケープではなく16進エスケープとしてバイトを表示する
ショートバージョン:Emacsを表示する\ffか、\xff代わりに表示できます\377か? 長いバージョン:完全にテキストではなく、バイナリデータが含まれているファイル(たとえば、PostScriptまたはPDFファイル)を開いたとします。たとえば、GNU Emacsリファレンスカード(PDF)を開いたとします。 次に、ASCII印刷可能範囲(32〜126)の外のバイトについては、 Emacsは「上位」バイト(128〜255の値を持つバイト)を8進数のエスケープシーケンスとして表示します。128は\200、129は\201、…、255はと表示され\377ます。 Emacsは、バイト0から31(タブとして表示されないバイト9 ^I、および改行として表示されないバイト10を除いて^J)をキャレットとして示し、その後に64文字先の文字が続きます:バイト0は^@、バイトとして表示されます1は^A、…、バイト26は^Z、バイト27は^[、…、バイト31はと表示され^_ます。また、Emacsはバイト127をとして示しています^?。 Emacsが8進数を表示する理由は歴史的なものであることは知っています。数十年前のある時点で、8進数がより一般的に使用されていました。(たとえば、man ascii最初は8進数で始まり、TeXは8進数のエスケープシーケンスをサポートします。)しかし、最近では8進数は16進数よりも有用ではないので(たとえば、出力hexdumpまたはPythonバイト文字列表現と比較するため)、16進数を表示したいと思います。エスケープシーケンス。どうすれば変更できますか? (注:8進数のエスケープシーケンスは、通常のテキストのように見える代わりに強調表示されます。もちろん、エスケープ文字に「入る」ことはできません(つまりC-f、前のポイントでヒット\343すると、後のポイントに移動します\343)。これを保持します。)

1
単一の文字を検索するときに、search-forwardに代わるより効率的な方法はありますか?
バッファの内容を文字列のリストに分割する必要があります。null文字は、アイテムを区切るために使用されます。 アイテムが改行文字で区切られている場合は、同じ方法を使用できますprocess-lines。 (let (lines) (while (not (eobp)) (setq lines (cons (buffer-substring-no-properties (line-beginning-position) (line-end-position)) lines)) (forward-line 1)) (nreverse lines)) 私は仮定しforward-line、効率的ですが、使用line-beginning-positionしてline-end-position少し疑わしいです。しかし、ヌル文字が使用されているため、とにかくそれを行うことはできません。 それを行う1つの方法は次のとおりです。 (split-string (buffer-string) "\0") 私もこのバリエーションを検討していました: (split-string (buffer-substring-no-properties (point-min) (point-max)) "\0") それは実際にはより効率的ですか?バッファ内のテキストはプロパティ化されていませんが、存在しないプロパティを探すとオーバーヘッドが増えると思います。 バッファを文字列に読み取ってから文字列を分割する代わりに、バッファを直接操作したいと思います。これも実際にはより効率的であると想定しています。 (let ((beg (point)) items) (while (search-forward "\0" nil t) (push (buffer-substring-no-properties beg (1- (point))) items) (setq beg (point))) (nreverse …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.