次: , 前: Modifying Strings, 上: Strings and Characters


4.5 文字と文字列の比較

— 機能: char-equal character1 character2

この関数は、引数が同じ文字を表していればtを返し、 さもなければnilを返す。 case-fold-searchnil以外であると、 この関数は大文字小文字の違いを区別しない。

          (char-equal ?x ?x)
               => t
          (let ((case-fold-search nil))
            (char-equal ?x ?X))
               => nil
     
— 機能: string= string1 string2

この関数は、2つの文字列の各文字が正確に一致すればtを返す。 大文字小文字を区別する。

          (string= "abc" "abc")
               => t
          (string= "abc" "ABC")
               => nil
          (string= "ab" "ABC")
               => nil
     

関数string=は2つの文字列のテキスト属性を無視する。 equal(see Equality Predicates)が2つの文字列を比較する際には、 string=を使う。

文字列に非ASCII文字が含まれ、 一方がユニバイトであり他方がマルチバイトである場合、 それらが等しいことはない。 see Text Representations

— 機能: string-equal string1 string2

string-equalstring=の別名。

— 機能: string< string1 string2

この関数は2つの文字列を1文字ずつ比較する。 まず、文字列を走査し、対応する文字同士の対で一致しないものを探す。 そのような対の文字の小さいほうがstring1の文字であるならば、 string1が小さく、この関数はtを返す。 文字の小さいほうがstring2の文字であるならば、 string1が大きく、この関数はnilを返す。 2つの文字列が完全に一致する場合、値はnilである。

文字の対は、それらの文字コードで比較する。 ASCII文字集合では、小文字は大文字より大きな数値であり、 数字文字や多くの句読点文字は大文字より小さな数値であることに注意。 ASCII文字はどんな非ASCII文字よりも小さい。 ユニバイト非ASCII文字はマルチバイト非ASCII文字よりもつねに小さい。 (see Text Representations)。

          (string< "abc" "abd")
               => t
          (string< "abd" "abc")
               => nil
          (string< "123" "abc")
               => t
     

文字列の長さが異なりstring1の長さまで一致する場合、 結果はtである。 string2の長さまで一致する場合、結果はnilである。 空文字列は他のどんな文字列よりも小さい。

          (string< "" "abc")
               => t
          (string< "ab" "abc")
               => t
          (string< "abc" "")
               => nil
          (string< "abc" "ab")
               => nil
          (string< "" "")
               => nil
     
— 機能: string-lessp string1 string2

string-lesspstring<の別名。

— 機能: compare-strings string1 start1 end1 string2 start2 end2 &optional ignore-case

この関数は、string1の指定部分とstring2の指定部分を比較する。 string1の指定部分は、 添字start1位置から始まり添字end1位置までである (デフォルトは文字列の末尾)。 string2の指定部分は、 添字start2位置から始まり添字end2位置までである (デフォルトは文字列の末尾)。

どちらの文字列も比較のためにマルチバイトに変換するので (see Text Representations)、 ユニバイト文字列とマルチバイトが等しくなる場合もある。 ignore-casenilでなければ、大文字小文字を区別しないので、 大文字は小文字に等しくなる

2つの文字列の指定部分が一致すれば、値はt。 さもなければ、値は何文字目までが一致してどちらの文字列が小さいかを示す。 その絶対値は、2つの文字列の始めから一致した文字の個数に1を加えたもの。 string1(の指定部分)が小さいならば符号は負になる。

— 機能: assoc-ignore-case key alist

この関数は、assocと同様に動作するが、 keyは文字列である必要があり、 compare-stringsを用いて比較する点が異なる。 大文字小文字を区別しないで比較する。

— 機能: assoc-ignore-representation key alist

この関数は、assocと同様に動作するが、 keyは文字列である必要があり、 compare-stringsを用いて比較する点が異なる。 大文字小文字を区別して比較する。

バッファ内のテキストを比較する Comparing Textcompare-buffer-substringsも参照してください。 文字列に対して正規表現の一致を取る関数string-matchは、 ある種の文字列比較に使えます。 See Regexp Search