テキストの比較
文字配列および string 配列のテキストをさまざまな方法で比較します。string 配列と文字ベクトルは、関係演算子および関数 strcmp
を使用して比較できます。string 配列は、その他のタイプの配列と同じように、関数 sort
を使用して並べ替えることができます。MATLAB® には、テキスト内の文字を検査する関数も用意されています。たとえば、文字ベクトルや string 配列内にあるどの文字が実際の文字か空白文字かを判別できます。
string 配列の等価性の比較
関係演算子 ==
および ~=
を使用して、string 配列を比較してその等価性を評価できます。string 配列を比較する場合、関係が真の位置には 1
、関係が真でない位置には 0
を含む logical 配列が出力になります。
2 つの string スカラーを作成します。string は二重引用符を使用して作成できます
str1 = "Hello"; str2 = "World"; str1,str2
str1 = "Hello"
str2 = "World"
str1
と str2
が等しいかどうかを比較します。
str1 == str2
ans = logical
0
複数の要素を含む string 配列を、string スカラーと比較します。
str1 = ["Mercury","Gemini","Apollo";... "Skylab","Skylab B","International Space Station"]; str2 = "Apollo"; str1 == str2
ans = 2x3 logical array
0 0 1
0 0 0
string 配列を文字ベクトルと比較します。一方の変数が string 配列である限り、比較は可能です。
chr = 'Gemini';
TF = (str1 == chr)
TF = 2x3 logical array
0 1 0
0 0 0
TF
を使って str1
にインデックスを付け、Gemini
に一致した string 要素を抽出します。logical 配列を使用して配列にインデックスを付けることができます。
str1(TF)
ans = "Gemini"
~=
演算子を使用して不等価性を比較します。str1
にインデックスを付けて 'Gemini'
に一致しない要素を抽出します。
TF = (str1 ~= chr)
TF = 2x3 logical array
1 0 1
1 1 1
str1(TF)
ans = 5x1 string
"Mercury"
"Skylab"
"Skylab B"
"Apollo"
"International Space Station"
2 つの非スカラー string 配列を比較します。2 つの非スカラー配列を比較する場合、それらは同じサイズでなければなりません。
str2 = ["Mercury","Mars","Apollo";... "Jupiter","Saturn","Neptune"]; TF = (str1 == str2)
TF = 2x3 logical array
1 0 1
0 0 0
str1
にインデックスを付けて一致を抽出します。
str1(TF)
ans = 2x1 string
"Mercury"
"Apollo"
その他の関係演算子を使用した string 配列の比較
文字列は、関係演算子 >
、>=
、<
および <=
を使用して比較することもできます。大文字で始まる文字列は、小文字で始まる文字列より順番が前になります。たとえば、文字列 "ABC"
は、"abc"
より小さくなります。数字と一部の句読点も、文字より前になります。
"ABC" < "abc"
ans = logical
1
>
演算子を使用して、名前を含む string 配列を、別の名前と比較します。Sanchez
、de Ponte
、Nash
の名前は、それぞれ Matthews
より後に来ます。これは、S
、d
、N
はすべて M
より大きいからです。
str = ["Sanchez","Jones","de Ponte","Crosby","Nash"]; TF = (str > "Matthews")
TF = 1x5 logical array
1 0 1 0 1
str(TF)
ans = 1x3 string
"Sanchez" "de Ponte" "Nash"
string 配列の並べ替え
string 配列を並べ替えることができます。MATLAB® では、UTF-16 文字エンコード スキームを使用して、文字を Unicode® として格納します。文字配列と string 配列は UTF-16 コード ポイント順に基づいて並べ替えられます。ASCII 文字でもある文字の場合、この順序では大文字が小文字よりも前になることを意味します。数字と一部の記号も文字より前にあります。
string 配列 str
を並べ替えます。
sort(str)
ans = 1x5 string
"Crosby" "Jones" "Nash" "Sanchez" "de Ponte"
2 行 3 列の string 配列を並べ替えます。関数 sort
は、各列ごとに個別に要素を並べ替えます。
sort(str2)
ans = 2x3 string
"Jupiter" "Mars" "Apollo"
"Mercury" "Saturn" "Neptune"
各行の要素を並べ替えるには、2 番目の次元に沿って str2
を並べ替えます。
sort(str2,2)
ans = 2x3 string
"Apollo" "Mars" "Mercury"
"Jupiter" "Neptune" "Saturn"
文字ベクトルの比較
文字ベクトルと文字ベクトルの cell 配列を相互に比較できます。関数 strcmp
を使用して 2 つの文字ベクトルを比較するか、strncmp
を使用して最初の N
個の文字を比較します。また、strcmpi
と strncmpi
を使用して、大文字と小文字を区別しないで比較することもできます。
関数 strcmp
を使用して 2 つの文字ベクトルを比較します。chr1
と chr2
は等しくありません。
chr1 = 'hello'; chr2 = 'help'; TF = strcmp(chr1,chr2)
TF = logical
0
MATLAB の strcmp
は、C バージョンの strcmp
とは異なることに注意してください。C バージョンの strcmp
は、2 つの文字配列が異なるときではなく、同じときに 0
を返します。
関数 strncmp
を使用して最初の 2 文字を比較します。両方の文字ベクトルが he
で始まるので、TF
は 1
です。
TF = strncmp(chr1,chr2,2)
TF = logical
1
文字ベクトルの cell 配列 2 つを比較します。strcmp
は、cell 配列と同じサイズの logical 配列を返します。
C1 = {'pizza'; 'chips'; 'candy'}; C2 = {'pizza'; 'chocolate'; 'pretzels'}; strcmp(C1,C2)
ans = 3x1 logical array
1
0
0
string 配列および文字配列内の文字の検査
関数 isstrprop
、isletter
、isspace
を使用して、string 配列または文字配列内の文字を検査できます。
isstrprop
は string 配列または文字配列内の文字を検査。関数
isletter
およびisspace
は文字配列内のみの文字を検査。
文字ベクトル内のどの文字が空白文字かを特定します。isspace
は、chr
と同じサイズの logical ベクトルを返します。
chr = 'Four score and seven years ago';
TF = isspace(chr)
TF = 1x30 logical array
0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0
関数 isstrprop
は、文字がもつ多くの異なる特性をクエリできます。isstrprop
では、string または文字ベクトル内の文字が、文字、英数字、10 進数、16 進数、または句読点であるかどうかを判別できます。
文字列内のどの文字が句読点であるかを特定します。isstrprop
は、str
内の文字数と同じ長さの logical ベクトルを返します。
str = "A horse! A horse! My kingdom for a horse!"
str = "A horse! A horse! My kingdom for a horse!"
isstrprop(str,"punct")
ans = 1x41 logical array
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
文字ベクトル chr
内のどの文字がアルファベット文字であるかを特定します。
isstrprop(chr,"alpha")
ans = 1x30 logical array
1 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1
参考
strcmp
| sort
| isstrprop
| isletter
| isspace
| eq
| ne
| gt
| ge
| le
| lt