GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Comparing-Text.html ・ emacs-doc.conao3.com

33.3 テキストの比較

この関数を使うと、バッファ内のテキストの一部を、あらかじめ文字列にコピーすることなく比較できます。

関数: compare-buffer-substrings buffer1 start1 end1 buffer2 start2 end2

この関数を使用すると、同一バッファ内の2つの部分文字列、または異なる2つのバッファを比較できます。最初の3つの引数で一方の部分文字列を指定し、バッファ(またはバッファ名)とバッファ内の2つの位置を指定します。最後の3つの引数で、もう一方の部分文字列を同様に指定します。nil を buffer1、buffer2、またはその両方に使用することで、現在のバッファを表すことができます。

最初の部分文字列が小さい場合は値が負、大きい場合は正、等しい場合は0となります。結果の絶対値は、部分文字列内で最初に異なる文字が現れるインデックスに1を加えた値となります。

この関数は、case-fold-search が nil でない場合、文字の比較時に大文字小文字を区別しません。また、テキストプロパティは常に無視されます。

現在のバッファにテキスト ‘foobarbar haha!rara!’ があるとします。この例では、2つの部分文字列は ‘rbar ’ と ‘rara!’ になります。最初の部分文字列の方が2文字目で大きいため、値は2となります。

(compare-buffer-substrings nil 6 11 nil 16 21)
     ⇒ 2