Next: , Previous: Buffer Contents, Up: Text


31.3 テキストの比較

この関数により、バッファ内のテキストの部分同士を 文字列にコピーせずに比較できます。

— Function: compare-buffer-substrings buffer1 start1 end1 buffer2 start2 end2

この関数は、同一バッファ内の2つの部分文字列、あるいは、 異なる2つのバッファの部分文字列を比較する。 始めの3つの引数は、バッファとそのバッファ内の2つの位置を与え、 1つの部分文字列を指定する。 残りの3つの引数も同様にして別の部分文字列を指定する。 カレントバッファを表すために、 buffer1buffer2のいずれか、あるいは、 両方にnilを指定できる。

始めの文字列のほうが小さければ値は負であり、 始めのほうが大きければ値は正であり、等しければ0である。 結果の絶対値は、部分文字列の中で最初に異なる文字の添字足す1である。

この関数は、case-fold-searchnil以外であると、 文字の比較では大文字小文字を区別しない。 テキスト属性はつねに無視する。

カレントバッファにはテキスト‘foobarbar haha!rara!’があるとする。 すると、この例の2つの部分文字列は‘rbar ’と‘rara!’である。 2番目の文字で最初の文字列のほうが大きいので、結果は2である。

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