Matlab-strings
MATLAB-文字列
MATLABでは、文字列の作成は非常に簡単です。 実際、何度も使用しています。 たとえば、コマンドプロンプトで次を入力します-
my_string = 'Tutorials Point'
MATLABは上記のステートメントを実行し、次の結果を返します-
my_string = Tutorials Point
MATLABはすべての変数を配列と見なし、文字列は文字配列と見なされます。 whos コマンドを使用して、上記で作成した変数を確認しましょう-
whos
MATLABは上記のステートメントを実行し、次の結果を返します-
Name Size Bytes Class Attributes
my_string 1x16 32 char
興味深いことに、 uint8 や uint16 などの数値変換関数を使用して、文字列内の文字を数値コードに変換できます。 char 関数は、整数ベクトルを文字に変換して戻します-
例
スクリプトファイルを作成し、それに次のコードを入力します-
my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string) % 8-bit ascii values
str_back_to_char= char(str_ascii)
str_16bit = uint16(my_string) % 16-bit ascii values
str_back_to_char = char(str_16bit)
あなたがファイルを実行すると、次の結果が表示されます-
str_ascii =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
str_16bit =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
長方形の文字配列
これまでに説明した文字列は、1次元の文字配列です。ただし、それ以上を保存する必要があります。 プログラムにもっと次元のテキストデータを保存する必要があります。 これは、長方形の文字配列を作成することにより実現されます。
長方形の文字配列を作成する最も簡単な方法は、2つ以上の1次元文字配列を、必要に応じて垂直または水平に連結することです。
あなたは、次のいずれかの方法で文字列を垂直に組み合わせることができます-
- MATLAB連結演算子 [] を使用し、各行をセミコロン(;)で区切ります。 このメソッドでは、各行に同じ数の文字が含まれている必要があることに注意してください。 異なる長さの文字列の場合、必要に応じてスペース文字を埋め込む必要があります。
- char 関数を使用します。 文字列の長さが異なる場合、charは短い文字列の末尾に空白を埋め込み、各行の文字数が同じになるようにします。
例
スクリプトファイルを作成し、それに次のコードを入力します-
doc_profile = ['Zara Ali '; ...
'Sr. Surgeon '; ...
'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
'RN Tagore Cardiology Research Center')
あなたがファイルを実行すると、次の結果が表示されます-
doc_profile =
Zara Ali
Sr. Surgeon
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali
Sr. Surgeon
RN Tagore Cardiology Research Center
あなたは、次のいずれかの方法で文字列を水平方向に組み合わせることができます-
- MATLAB連結演算子 [] を使用して、入力文字列をコンマまたはスペースで区切ります。 このメソッドは、入力配列の末尾のスペースを保持します。
- 文字列連結関数 strcat を使用します。 このメソッドは、入力の末尾のスペースを削除します。
例
スクリプトファイルを作成し、それに次のコードを入力します-
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)
あなたがファイルを実行すると、次の結果が表示されます-
profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
文字列をセル配列に結合
前回の説明から、配列内のすべての文字列は同じ長さでなければならないため、異なる長さの文字列を結合するのは面倒なことは明らかです。 文字列の末尾に空白スペースを使用して、文字列の長さを均等にしました。
ただし、文字列を結合するより効率的な方法は、結果の配列をセル配列に変換することです。
MATLABセル配列は、異なるサイズとタイプのデータを配列に保持できます。 セル配列は、さまざまな長さの文字列を格納するためのより柔軟な方法を提供します。
*cellstr* 関数は、文字配列を文字列のセル配列に変換します。
例
スクリプトファイルを作成し、それに次のコードを入力します-
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)
あなたがファイルを実行すると、次の結果が表示されます-
{
[1,1] = Zara Ali
[2,1] = Sr. Surgeon
[3,1] = R N Tagore Cardiology Research Center
}
MATLABの文字列関数
MATLABは、文字列を作成、結合、解析、比較、操作する多数の文字列関数を提供します。
次の表は、MATLABの文字列関数の簡単な説明を提供します-
関数
目的
テキストを文字配列に格納したり、文字配列を結合したりするための関数。
空白
空白文字の文字列を作成します
cellstr
文字配列から文字列のセル配列を作成
char
文字配列に変換(文字列)
iscellstr
入力が文字列のセル配列かどうかを判別
イシャール
アイテムが文字配列かどうかを判別
sprintf
データを文字列にフォーマットする
strcat
文字列を水平に連結する
strjoin
セル配列内の文字列を単一の文字列に結合します
文字列の一部を識別し、部分文字列を見つけて置換するための関数
イシャール
アイテムが文字配列かどうかを判別
島
アルファベットの配列要素
isspace
スペース文字である配列要素
isstrprop
文字列が指定されたカテゴリのものかどうかを判別
sscanf
文字列からフォーマットされたデータを読み取る
strfind
別の文字列内で1つの文字列を見つける
strrep
部分文字列を検索して置換
strsplit
指定された区切り文字で文字列を分割
strtok
文字列の選択された部分
検証する
テキスト文字列の有効性を確認する
シンバル
式のシンボリック変数を決定する
正規表現
正規表現に一致(大文字と小文字を区別)
正規表現
正規表現に一致(大文字と小文字を区別しない)
正規表現
正規表現を使用して文字列を置換
正規表現
文字列を正規表現に変換します
文字列比較のための関数
strcmp
文字列の比較(大文字と小文字を区別)
strcmpi
文字列の比較(大文字と小文字は区別されません)
strncmp
文字列の最初のn文字を比較(大文字と小文字を区別)
strncmpi
文字列の最初のn文字を比較します(大文字と小文字は区別されません)
文字列を大文字または小文字に変更し、空白を作成または削除するための関数
空白
文字列の末尾から末尾の空白を削除します
strtrim
文字列から先頭と末尾の空白を削除します
下
文字列を小文字に変換します
アッパー
文字列を大文字に変換
ジャスト
文字配列を揃える
例
次の例は、上記の文字列関数の一部を示しています-
文字列のフォーマット
スクリプトファイルを作成し、それに次のコードを入力します-
A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)
あなたがファイルを実行すると、次の結果が表示されます-
ans = 3141.592654
3141.59
+3141.59
3141.59
000003141.59
文字列の結合
スクリプトファイルを作成し、それに次のコードを入力します-
%cell array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};
% Join strings in cell array into single string
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")
あなたがファイルを実行すると、次の結果が表示されます-
str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange
文字列の検索と置換
スクリプトファイルを作成し、それに次のコードを入力します-
students = {'Zara Ali', 'Neha Bhatnagar', ...
'Monica Malik', 'Madhu Gautam', ...
'Madhu Sharma', 'Bhawna Sharma',...
'Nuha Ali', 'Reva Dutta', ...
'Sunaina Ali', 'Sofia Kabir'};
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
first_names = strtok(students)
あなたがファイルを実行すると、次の結果が表示されます-
new_student =
{
[1,1] = Poulomi Dutta
}
first_names =
{
[1,1] = Zara
[1,2] = Neha
[1,3] = Monica
[1,4] = Madhu
[1,5] = Madhu
[1,6] = Bhawna
[1,7] = Nuha
[1,8] = Reva
[1,9] = Sunaina
[1,10] = Sofia
}
文字列の比較
スクリプトファイルを作成し、それに次のコードを入力します-
str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
sprintf('%s and %s are equal', str1, str2)
else
sprintf('%s and %s are not equal', str1, str2)
end
あなたがファイルを実行すると、次の結果が表示されます-
str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal