matlab.lang.makeUniqueStrings

Создайте уникальные строки из входных строк

Описание

пример

U = matlab.lang.makeUniqueStrings(S) уникальные строки построений или векторы символов, U, от входных строк или векторов символов, S, путем добавления подчеркивания и номера к копиям.

пример

U = matlab.lang.makeUniqueStrings(S,excludedStrings) строки построений или векторы символов, которые уникальны в U и относительно excludedStrings. makeUniqueStrings функция не проверяет excludedStrings для уникальности.

пример

U = matlab.lang.makeUniqueStrings(S,whichStringsIdx) задает подмножество S сделать уникальным в целом наборе. makeUniqueStrings делает элементы в S(whichStringsIdx) уникальный между собой и относительно остающихся элементов. makeUniqueStrings возвращает остающиеся элементы, немодифицированные в U. Используйте этот синтаксис, когда вы имеете массив строк или массив векторов символов, и должны проверять, что только некоторые элементы уникальны.

пример

U = matlab.lang.makeUniqueStrings(S,___, maxStringLength) задает максимальную длину, maxStringLength, из элементов в U. Если makeUniqueStrings не может сделать элементы в S уникальный, не превышая maxStringLength, это возвращает ошибку. Можно использовать этот синтаксис с любым из входных параметров предыдущих синтаксисов.

пример

[U, modified] = matlab.lang.makeUniqueStrings(___) возвращает логический массив, modified, указание на модифицированные элементы.

Примеры

свернуть все

Создайте массив ячеек имен и сделайте каждый элемент уникальным.

S = {'John' 'Sue' 'Nick' 'John' 'Campion' 'John' 'Jason'};
U = matlab.lang.makeUniqueStrings(S)
U = 1x7 cell array
  Columns 1 through 6

    {'John'}    {'Sue'}    {'Nick'}    {'John_1'}    {'Campion'}    {'John_2'}

  Column 7

    {'Jason'}

makeUniqueStrings функция добавляет двойные названия в элементах 3 и 5 с символами нижнего подчеркивания и постепенно увеличивающимися числами.

Не задавая исключенные значения, сделайте векторы символов в U уникальный.

S = {'John' 'Sue' 'Nick' 'John' 'Campion' 'John' 'Jason'};
U = matlab.lang.makeUniqueStrings(S)
U = 1x7 cell array
  Columns 1 through 6

    {'John'}    {'Sue'}    {'Nick'}    {'John_1'}    {'Campion'}    {'John_2'}

  Column 7

    {'Jason'}

Укажите что вектор символов, 'Nick', должен быть исключен из выхода.

U = matlab.lang.makeUniqueStrings(S, 'Nick')
U = 1x7 cell array
  Columns 1 through 5

    {'John'}    {'Sue'}    {'Nick_1'}    {'John_1'}    {'Campion'}

  Columns 6 through 7

    {'John_2'}    {'Jason'}

makeUniqueStrings исключает 'Nick' от U и вместо этого изменяет первую копию, найденную в элементе 3, чтобы быть 'Nick_1'.

Исключите переменные рабочей области из уникального массива ячеек.

Sue = 42;
U = matlab.lang.makeUniqueStrings(S, who)
U = 1x7 cell array
  Columns 1 through 5

    {'John'}    {'Sue_1'}    {'Nick'}    {'John_1'}    {'Campion'}

  Columns 6 through 7

    {'John_2'}    {'Jason'}

Начиная с 'Sue' существует в рабочей области, makeUniqueStrings делает этот вектор символов уникальным путем добавления подчеркивания и номера.

Создайте массив векторов символов и сделайте только первые четыре элемента уникальными.

S = {'quiz' 'quiz' 'quiz' 'exam' 'quiz' 'exam'};
U = matlab.lang.makeUniqueStrings(S, 1:4)
U = 1x6 cell array
  Columns 1 through 5

    {'quiz_1'}    {'quiz_2'}    {'quiz_3'}    {'exam_1'}    {'quiz'}

  Column 6

    {'exam'}

Первые четыре элемента в U уникальны между собой, и среди векторов оставшегося символа в элементах 5 и 6 ('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 array
  Columns 1 through 6

    {'quiz'}    {'quiz'}    {'quiz'}    {'exam'}    {'quiz'}    {'exam'}

  Column 7

    {'quiz'}

U = matlab.lang.makeUniqueStrings(S, 1:4)
U = 1x7 cell array
  Columns 1 through 5

    {'quiz_1'}    {'quiz_2'}    {'quiz_3'}    {'exam_1'}    {'quiz'}

  Columns 6 through 7

    {'exam'}    {'quiz'}

Векторы символов, что makeUniqueStrings проверки все еще уникальны между собой и среди остающихся элементов. Начиная с makeUniqueStrings не проверяет элементов после того, как элемент 4, дублирующиеся векторы символов останутся.

Создайте массив из S где первые три элемента уникальны, и максимальная длина каждой строки равняется 5.

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

Первый элемент является усеченным к 5 символам. Вторые и третьи элементы являются усеченными к 3 символам, чтобы позволить makeUniqueStrings добавить подчеркивание и номер, и все еще не превысить 5 символов.

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 не изменил второй элемент.

Входные параметры

свернуть все

Входные строки, заданные как вектор символов, массив ячеек из символьных векторов или массив строк.

Векторы символов, чтобы исключить из U, заданный как вектор символов, массив ячеек из символьных векторов или массив строк.

Пример: 'dontDuplicateThis'

Пример: {'excludeS1' 'excludeS2'}

Пример: ["excludeThis" "andThis"]

Пример: who

Подмножество Sсделать уникальным в целом наборе, заданном как область значений линейных индексов или как логический массив с тем же размером и формой как S. Если существуют копии в S, makeUniqueStrings функция только изменяет заданных whichStringsIdx.

Если whichStringsIdx логический массив, элементы проверяются на уникальность, когда элемент массива в том же положении имеет значение true.

Пример: 1:5, logical([1 0 1]), [true false true]

Максимальная длина строк в U, заданный как целое число. Если makeUniqueStrings не может сделать элементы в S уникальный, не превышая maxStringLength, это возвращает ошибку.

Выходные аргументы

свернуть все

Уникальные строки, возвращенные как вектор символов, массив ячеек из символьных векторов или массив строк. Выход имеет ту же размерность как вход, S.

Индикатор модифицированных элементов, возвращенных как логический скаляр или массив и наличие той же размерности как вход, S. Значение 1 TRUE) указывает на тот makeUniqueStrings измененный элемент в соответствующем месте. Значение 0 ложь) указывает на тот makeUniqueStrings не должен был изменять элемент в соответствующем месте.

Советы

  • Чтобы гарантировать, что входные значения допустимы и уникальны, используйте 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'

Смотрите также

| |

Введенный в R2014a