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 | 入力が文字列のセル配列であるかどうかを判別します |
ischar | アイテムが文字配列であるかどうかを判別する |
sprintf | データを文字列にフォーマットする |
strcat | 文字列を水平方向に連結します |
strjoin | セル配列の文字列を単一の文字列に結合します |
文字列の一部を識別し、部分文字列を検索して置換するための関数 | |
ischar | アイテムが文字配列であるかどうかを判別する |
isletter | アルファベットの配列要素 |
isspace | スペース文字である配列要素 |
isstrprop | 文字列が指定されたカテゴリのものであるかどうかを確認します |
sscanf | 文字列からフォーマットされたデータを読み取る |
strfind | 別の文字列内の1つの文字列を検索 |
strrep | 部分文字列を見つけて置換する |
strsplit | 指定された区切り文字で文字列を分割する |
strtok | 文字列の選択された部分 |
validatestring | テキスト文字列の有効性を確認してください |
symvar | 式のシンボリック変数を決定する |
正規表現 | 正規表現に一致(大文字と小文字を区別) |
regexpi | 正規表現に一致(大文字と小文字を区別しない) |
regexprep | 正規表現を使用して文字列を置き換えます |
regexptranslate | 文字列を正規表現に変換します |
文字列比較のための関数 | |
strcmp | 文字列の比較(大文字と小文字を区別) |
strcmpi | 文字列の比較(大文字と小文字を区別しない) |
strncmp | 文字列の最初のn文字を比較します(大文字と小文字が区別されます) |
strncmpi | 文字列の最初のn文字を比較します(大文字と小文字は区別されません) |
文字列を大文字または小文字に変更したり、空白を作成または削除したりするための関数 | |
デブランク | 文字列の終わりから末尾の空白を削除します |
strtrim | 文字列から先頭と末尾の空白を削除します |
下 | 文字列を小文字に変換する |
アッパー | 文字列を大文字に変換する |
strjust | 文字配列を正当化する |
例
次の例は、上記の文字列関数の一部を示しています。
文字列のフォーマット
スクリプトファイルを作成し、次のコードを入力します-
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