이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

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)는 하나 이상의 Name,Value 쌍 인수로 지정된 옵션을 추가로 포함합니다.

예제

[N, modified] = matlab.lang.makeValidName(___)은 논리형 배열 modified를 반환하여 수정된 요소를 나타냅니다. 이 구문은 위에 열거된 구문 중 하나의 입력 인수에 사용할 수 있습니다.

예제

모두 축소

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

첫 번째 요소와 두 번째 요소에서 makeValidName이 유효하지 않은 문자(#/)를 밑줄로 바꿨습니다. 세 번째 요소에서 문자형 벡터가 문자로 시작하지 않으므로 makeValidName이 접두사를 추가하고, 빈 공간을 삭제한 후, 삭제된 공간 뒤에 있는 문자를 대문자로 변환했습니다.

유효하지 않은 문자를 대응하는 16진수로 표현해 바꿉니다.

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

첫 번째 요소와 두 번째 요소에서 makeValidName이 유효하지 않은 문자(#/)를 16진수로 표현해 바꿨습니다. 세 번째 요소에서 문자형 벡터가 문자로 시작하지 않으므로 makeValidName이 접두사를 추가하고, 빈 공간을 삭제한 후, 삭제된 공간 뒤에 있는 문자를 대문자로 변환했습니다.

유효하지 않은 문자를 삭제합니다.

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

makeValidName이 유효하지 않은 문자(#/)를 삭제했습니다. 세 번째 요소에서 문자형 벡터가 문자로 시작하지 않으므로 makeValidName이 접두사를 추가하고, 빈 공간을 삭제한 후, 삭제된 공간 뒤에 있는 문자를 대문자로 변환했습니다.

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

문자로 시작하지 않는 요소의 앞에만 접두사가 추가됩니다.

S = {'a%name', 'name_1', '2_name'};
[N, modified] = matlab.lang.makeValidName(S)
N = 1x3 cell array
    {'a_name'}    {'name_1'}    {'x2_name'}

modified = 1x3 logical array

   1   0   1

makeValidName이 두 번째 요소를 수정하지 않았습니다.

입력 인수

모두 축소

입력 문자열로, 문자형 벡터로 구성된 셀형 배열, 문자형 벡터 또는 string형 배열로 지정됩니다.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: 'ReplacementStyle','delete'는 유효하지 않은 문자를 삭제합니다.

교체 스타일로, 'underscore', 'delete', 또는 'hex'로 지정됩니다. 값에 따라 MATLAB이 영숫자가 아닌 문자를 바꾸는 방식이 달라집니다. ReplacementStyle의 모든 값에 대해 MATLAB은 공백 문자를 삭제하고 공백 문자 뒤의 소문자를 대문자로 바꿉니다.

ReplacementStyle설명
'underscore'(디폴트 값)영숫자나 밑줄이 아닌 모든 문자를 밑줄로 바꿉니다. 'underscore'.
'hex'영숫자나 밑줄이 아닌 각 문자를 대응하는 16진수로 표현해 바꿉니다. 'hex'.
'delete'영숫자나 밑줄이 아닌 모든 문자를 삭제합니다. 'delete'.

makeValidName이 영숫자가 아닌 문자를 바꾼 후에 영문자로 시작하지 않는 입력값 앞에 접두사로 붙일 문자로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 예를 들어, 기본적으로 makeValidName은 입력값 '*hello' 앞에 문자를 접두사로 붙입니다. 영숫자가 아닌 문자를 바꾼 후, 입력값이 영문자로 시작하지 않기 때문입니다('_hello'). 그러나 영숫자가 아닌 문자를 삭제하는 교체 스타일을 지정할 경우 makeValidName은 문자를 접두사로 붙이지 않습니다. 영숫자가 아닌 문자를 바꾼 후, 입력값이 영문자로 시작합니다('hello').

유효한 접두사는 다음 조건을 충족해야 합니다.

  • 영문자로 시작합니다.

  • 영숫자와 밑줄만 포함합니다.

  • MATLAB 키워드가 아닙니다.

  • namelengthmax의 값보다 길지 않습니다.

출력 인수

모두 축소

유효한 MATLAB 식별자로, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, 또는 string형 배열로 반환됩니다. 출력값은 입력값 S와 차원 개수가 같습니다.

수정된 요소의 표시로, 논리형 스칼라 또는 논리형 배열로 반환되며 입력 인수 S와 동일한 차원 개수를 가집니다. 값 1(true)은 makeValidName이 해당하는 위치에 있는 입력값을 수정했음을 나타냅니다. 값 0(false)은 makeValidName이 해당하는 위치에 있는 입력값을 수정할 필요가 없었음을 나타냅니다.

  • 입력값이 유효하고 고유한지 확인하려면 matlab.lang.makeValidName 다음에 matlab.lang.makeUniqueStrings를 사용하십시오.

    S = {'my.Name','my_Name','my_Name'};
    validValues = matlab.lang.makeValidName(S)
    validUniqueValues = matlab.lang.makeUniqueStrings(validValues,{},...
        namelengthmax)
    validValues = 
    
        'my_Name'    'my_Name'    'my_Name'
    
    
    validUniqueValues = 
    
        'my_Name'    'my_Name_1'    'my_Name_2'

  • 유효하지 않은 문자 교체를 사용자 지정하려면 먼저 strrep이나 regexprep 같은 함수를 사용하여 유효한 문자로 변환하십시오. 예를 들어, strrep(S,'@','At')을 사용하여 S'@' 문자를 'At'으로 변환합니다. 그런 다음 matlab.lang.makeValidName을 사용하여 S의 모든 문자가 유효한지 확인합니다.

R2014a에 개발됨