Main Content

matlab.lang.makeUniqueStrings

입력 string형에서 고유한 string형 생성

설명

예제

U = matlab.lang.makeUniqueStrings(S)는 중복 항목에 밑줄과 번호를 추가하여 입력 string형 또는 입력 문자형 벡터 S에서 고유한 string형 또는 문자형 벡터 U를 생성합니다.

예제

U = matlab.lang.makeUniqueStrings(S,excludedStrings)U 내에서 그리고 excludedStrings에 대해 고유한 string형 또는 고유한 문자형 벡터를 생성합니다. makeUniqueStrings 함수는 excludedStrings에 대해 고유성을 확인하지 않습니다.

예제

U = matlab.lang.makeUniqueStrings(S,whichStringsIdx)는 전체 문자열 내에서 고유하게 만들 S의 부분을 지정합니다. makeUniqueStringsS(whichStringsIdx)의 요소끼리 서로 고유하고 나머지 요소에 대해서도 고유하도록 만듭니다. makeUniqueStrings는 나머지 요소를 U로 수정하지 않은 채로 반환합니다. 이 구문은 string형 배열 또는 문자형 벡터로 구성된 배열에서 그 배열의 일부 요소만 고유한지 확인하려는 경우 사용합니다.

예제

U = matlab.lang.makeUniqueStrings(S,___, maxStringLength)U에 있는 요소의 최대 길이 maxStringLength를 지정합니다. 만일 makeUniqueStringsmaxStringLength를 초과하지 않고 S의 요소를 고유하게 만드는 것이 불가능하다면 오류가 반환됩니다. 이 구문은 위에 열거된 구문 중 하나의 입력 인수에 사용할 수 있습니다.

예제

[U, modified] = matlab.lang.makeUniqueStrings(___)는 수정된 요소를 나타내는 논리형 배열 modified를 반환합니다.

예제

모두 축소

이름으로 구성된 셀형 배열을 만들고 각 요소를 고유하게 만듭니다.

S = {'John' 'Sue' 'Nick' 'John' 'Campion' 'John' 'Jason'};
U = matlab.lang.makeUniqueStrings(S)
U = 1x7 cell
    {'John'}    {'Sue'}    {'Nick'}    {'John_1'}    {'Campion'}    {'John_2'}    {'Jason'}

makeUniqueStrings 함수는 세 번째 요소와 다섯 번째 요소에 있는 중복된 이름에 밑줄과 증분 번호를 추가합니다.

제외된 값을 지정하지 않고 U의 문자형 벡터를 고유하게 만듭니다.

S = {'John' 'Sue' 'Nick' 'John' 'Campion' 'John' 'Jason'};
U = matlab.lang.makeUniqueStrings(S)
U = 1x7 cell
    {'John'}    {'Sue'}    {'Nick'}    {'John_1'}    {'Campion'}    {'John_2'}    {'Jason'}

출력값에서 문자형 벡터 'Nick'을 제외하도록 지정합니다.

U = matlab.lang.makeUniqueStrings(S, 'Nick')
U = 1x7 cell
    {'John'}    {'Sue'}    {'Nick_1'}    {'John_1'}    {'Campion'}    {'John_2'}    {'Jason'}

makeUniqueStringsU에서 'Nick'을 제외하고, 그 대신 요소 3에서 발견된 첫 번째 중복 항목을 'Nick_1'로 수정합니다.

고유한 셀형 배열에서 작업 공간 변수를 제외합니다.

Sue = 42;
U = matlab.lang.makeUniqueStrings(S, who)
U = 1x7 cell
    {'John'}    {'Sue_1'}    {'Nick'}    {'John_1'}    {'Campion'}    {'John_2'}    {'Jason'}

'Sue'가 작업 공간에 존재하므로, makeUniqueStrings는 밑줄과 번호를 추가하여 이 문자형 벡터를 고유하게 만듭니다.

문자형 벡터로 구성된 배열을 만들고 처음 네 개의 요소만 고유하게 만듭니다.

S = {'quiz' 'quiz' 'quiz' 'exam' 'quiz' 'exam'};
U = matlab.lang.makeUniqueStrings(S, 1:4)
U = 1x6 cell
    {'quiz_1'}    {'quiz_2'}    {'quiz_3'}    {'exam_1'}    {'quiz'}    {'exam'}

U의 처음 네 개 요소는 서로 고유하고 다섯 번째 요소와 여섯 번째 요소에 있는 나머지 문자형 벡터('quiz''exam')에 대해서도 고유합니다. 아니면 다음과 같이 선형 인덱스의 범위 대신 논리형 배열을 사용하여도 동일한 결과를 얻을 수 있습니다. U = matlab.lang.makeUniqueStrings(S, [true true true true false false]) 또는 U = matlab.lang.makeUniqueStrings(S, logical([1 1 1 1 0 0])).

중복된 'quiz'S의 끝에 추가하여 처음 네 개의 요소를 고유하게 만듭니다.

S{end+1} = 'quiz'
S = 1x7 cell
    {'quiz'}    {'quiz'}    {'quiz'}    {'exam'}    {'quiz'}    {'exam'}    {'quiz'}

U = matlab.lang.makeUniqueStrings(S, 1:4)
U = 1x7 cell
    {'quiz_1'}    {'quiz_2'}    {'quiz_3'}    {'exam_1'}    {'quiz'}    {'exam'}    {'quiz'}

makeUniqueStrings가 확인하는 문자형 벡터는 여전히 서로 고유하고 나머지 요소에 대해서도 고유합니다. makeUniqueStrings는 네 번째 요소 이후의 요소를 확인하지 않으므로, 중복된 문자형 벡터가 남게 됩니다.

S에서 처음 세 개의 요소가 고유하고 각 문자열의 최대 길이가 5인 배열을 만듭니다.

S = {'sampleData' 'sampleData' 'sampleData' 'sampleData'};
U = matlab.lang.makeUniqueStrings(S, 1:3, 5)
U = 1x4 cell
    {'sampl'}    {'sam_1'}    {'sam_2'}    {'sampleData'}

첫 번째 요소는 5번째 문자에서 잘립니다. 두 번째 요소와 세 번째 요소는 makeUniqueStrings가 밑줄과 번호를 추가하고 나서도 여전히 5자를 초과하지 않도록 3번째 문자에서 잘립니다.

이름으로 구성된 셀형 배열을 만들고 각 요소를 고유하게 만듭니다. 출력값 modified는 입력값의 어떤 요소가 수정되었는지 보여줍니다.

S = ["John"    "Sue"    "Nick"    "John"    "Campion"    "John"    "Jason"];
[U, modified] = matlab.lang.makeUniqueStrings(S)
U = 1x7 string
    "John"    "Sue"    "Nick"    "John_1"    "Campion"    "John_2"    "Jason"

modified = 1x7 logical array

   0   0   0   1   0   1   0

입력 인수

모두 축소

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

U에서 제외할 문자형 벡터로, 문자형 벡터로 구성된 셀형 배열, 문자형 벡터 또는 string형 배열로 지정됩니다.

예: 'dontDuplicateThis'

예: {'excludeS1' 'excludeS2'}

예: ["excludeThis" "andThis"]

예: who

전체 문자열 내에서 고유하도록 만들 S의 부분으로, 선형 인덱스의 범위로 지정되거나 크기와 형태가 S와 같은 논리형 배열로 지정됩니다. S에 중복된 문자열이 있는 경우 makeUniqueStrings 함수는 whichStringsIdx로 지정된 문자열만 수정합니다.

whichStringsIdx가 논리형 배열인 경우, 같은 위치에 있는 배열 요소의 값이 true이면 요소가 고유한지 확인합니다.

예: 1:5, logical([1 0 1]), [true false true]

U에 있는 문자열의 최대 길이로, 정수로 지정됩니다. 만일 makeUniqueStringsmaxStringLength를 초과하지 않고 S의 요소를 고유하게 만드는 것이 불가능하다면 오류가 반환됩니다.

출력 인수

모두 축소

고유한 문자열로, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 반환됩니다. 출력값은 입력값 S와 차원이 같습니다.

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

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

    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'

버전 내역

R2014a에 개발됨