matlab.lang.makeUniqueStrings

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

Синтаксис

U = matlab.lang.makeUniqueStrings(S)
U = matlab.lang.makeUniqueStrings(S,excludedStrings)
U = matlab.lang.makeUniqueStrings(S,whichStringsIdx)
U = matlab.lang.makeUniqueStrings(S,___, maxStringLength)
[U, modified] = 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"]

Пример: кто

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

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

Пример 1: 5, логический ([1 0 1]), [истинная ложная истина]

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

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

свернуть все

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

Индикатор измененных элементов, возвращенных как логический скаляр или массив и наличие той же размерности как входной параметр, S. Значение 1 (true) указывает, что makeUniqueStrings изменил элемент в соответствующем месте. Значение 0 (false) указывает, что 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

Была ли эта тема полезной?