matlab.lang.makeUniqueStrings

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

Описание

пример

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

пример

U = matlab.lang.makeUniqueStrings(S,excludedStrings) создает строки или векторы символов, которые являются уникальными в U и в отношении excludedStrings. The 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
  Columns 1 through 6

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

  Column 7

    {'Jason'}

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

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

S = {'John' 'Sue' 'Nick' 'John' 'Campion' 'John' 'Jason'};
U = matlab.lang.makeUniqueStrings(S)
U = 1x7 cell
  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
  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
  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
  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
  Columns 1 through 6

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

  Column 7

    {'quiz'}

U = matlab.lang.makeUniqueStrings(S, 1:4)
U = 1x7 cell
  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
    {'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
    {'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 (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