Main Content

matlab.lang.makeValidName

入力文字列からの有効なMATLAB識別子の作成

説明

N= matlab.lang.makevalidname(S)は,入力Sから、有効な MATLAB®識別子Nを作成します。関数makeValidNameは、Nの文字がであること保证しません。

Matlab识别子识别子,(a – Z a – Z 、0–9)ととアンダースコアささでありであり,最初最初のの文字はは英字ででnamelengthmax以下です。

makeValidNameは、まず空白文字を削除してから、英数字またはアンダースコアでない文字を置換します。空白文字の後に小文字が来る場合、makeValidNameは、その文字を対応する大文字に変換します。

N= matlab.lang.makevalidname(S,Name,Value)には、1 つ以上のName,Valueペア引数によって指定された追加オプションが含まれます。

[N,modified] = matlab.lang.makeValidName(___)は、logical 配列modifiedを返して、変更された要素を示します。この構文では、前述の構文の入力引数のいずれかを使用できます。

すべて折りたたむ

S = {'Item_#','Price/Unit','一阶','Contact'};N = matlab.lang.makeValidName(S)
N =1x4 cell{'Item__'} {'Price_Unit'} {'x1stOrder'} {'Contact'}

最初の要素と 2 番目の要素で、makeValidNameは、無効な文字 (#/) をアンダースコアに置換しました。3 番目の要素は、文字ベクトルが英字で始まらないので、makeValidNameは、それに接頭辞を付加し、空白を削除し、削除された空白の後にある文字を大文字に変換しました。

無効な文字を、それに対応する 16 進数表現に置換します。

S = {'Item_#','Price/Unit','一阶','Contact'};N = matlab.lang.makeValidName(S,“ReplacementStyle”,'hex')
N =1x4 cell{'Item_0x23'} {'Price0x2FUnit'} {'x1stOrder'} {'Contact'}

最初の要素と 2 番目の要素で、makeValidNameは、無効な文字 (#/)を16进数表现置换しまし。番目番目要素,文字ベクトルベクトルが英字で,,,,makeValidNameは、それに接頭辞を付加し、空白を削除し、削除された空白の後にある文字を大文字に変換しました。

無効な文字を削除します。

N = matlab.lang.makeValidName(S,“ReplacementStyle”,'delete')
N =1x4 cell{'Item_'} {'PriceUnit'} {'x1stOrder'} {'Contact'}

makeValidNameは、無効な文字 (#/)を削除。。番目番目要素,ベクトルが英字始まら始まらない,,makeValidNameは、それに接頭辞を付加し、空白を削除し、削除された空白の後にある文字を大文字に変換しました。

S = {'1stMeasurement','2ndMeasurement','控制'};N = matlab.lang.makeValidName(S,'Prefix','m_')
N =1x3 cell{'m_1stMeasurement'} {'m_2ndMeasurement'} {'Control'}

英字で始まらない要素の先頭にのみ、接頭辞が付加されます。

S = {'a%name','name_1','2_name'};[N, modified] = matlab.lang.makeValidName(S)
N =1x3 cell{'a_name'} {'name_1'} {'x2_name'}
修改=1x3逻辑数组1 0 1

makeValidNameは 2 番目の要素を変更しませんでした。

入力引数

すべて折りたたむ

入力 string。文字ベクトル、文字ベクトルの cell 配列または string 配列として指定します。

名前と値の引数

引数のオプションのペアをName1=Value1,...,NameN=ValueNとして指定します。ここでNameは引数名で、Valueは対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Nameを引用符で囲みます。

例:“ReplacementStyle”,'delete'は無効な文字を削除します。

置換スタイル。'underscore''delete'または'hex'として指定します。この値は、MATLAB が英数字以外の文字をどう置換するかを制御します。MATLAB はReplacementStyleのすべての値について、空白文字を削除し、空白文字に続く小文字を大文字に変換します。

ReplacementStyle 説明
'underscore'(既定) 英数字でもアンダースコアでもない文字をすべてアンダースコアに置き換えます。'underscore'
'hex' 英数字でもアンダースコアでもない文字をすべて対応する 16 進数表記に置き換えます。'hex'
'delete' 英数字でもアンダースコアでもない文字をすべて削除します。'delete'

makeValidNameが英数字以外の文字を置換した後に、英字で始まらない入力に接頭辞として付ける文字。文字ベクトルまたは string スカラーとして指定します。たとえば、既定でmakeValidNameは入力'*hello'に接頭辞として文字を付けます。これは、英数字以外の文字を置換した後の入力が英字で始まらないためです ('_hello')。ただし、英数字以外の文字を削除する置換スタイルを指定した場合は、makeValidNameは接頭辞として文字を付けません。英数字以外の文字を置換した後の入力は、英字で始まります ('hello')。

有効な接頭辞は次の条件を満たさなければなりません。

  • 英字で始まる。

  • 英数字アンダースコアのみを。。

  • MATLAB キーワードではない。

  • 長さがnamelengthmaxの値以下。

出力引数

すべて折りたたむ

有効な MATLAB 識別子。文字ベクトル、文字ベクトルの cell 配列または string 配列として返されます。出力の次元数は、入力Sと同じです。

変更された要素のインジケーター。入力Sと同じ次元数をもつ論理スカラーまたは logical 配列として返されます。値が1(true) の場合、makeValidNameが、対応する位置にある入力を変更したことを示しています。値が0(false) の場合、makeValidNameは対応する位置にある入力を変更する必要がなかったことを示しています。

ヒント

  • 入力値有效かつになるようする,,,matlab.lang.makeUniqueStringsmatlab.lang.makeValidNameより後に使用します。

    S = {'my.Name','my_Name','my_Name'};有效values = matlab.lang.lang.makevalidname(s)valluniqueValues = matlab.lang.makeuniquestress(varrevalues,{},...namelengthmax)
    validValues = 'my_Name' 'my_Name' 'my_Name' validUniqueValues = 'my_Name' 'my_Name_1' 'my_Name_2'

  • 無効な文字の置換をカスタマイズするには、まず、strrepregexprepなどの関数を使用して有効な文字に変換します。たとえば、strrep(S,'@','At')を使用して、S'@'文字を'At'に変換します。次に、matlab.lang.makeValidNameを使用して、Sのすべての文字が必ず有効な文字になるようにします。

バージョン履歴

R2014a で導入