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