matlab.lang.makeValidName

Создайте допустимые идентификаторы MATLAB из входных строк

Описание

пример

N = matlab.lang.makeValidName(S) создает допустимые идентификаторы MATLAB®, N, от входных строк, S. 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 добавленный префикс, потому что вектор символов не начинается с буквы, удалил пустое место и использовал для своей выгоды символ после удаленного пробела.

Замените недопустимые символы на соответствующее шестнадцатеричное представление.

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

В первых и вторых элементах, makeValidName замененный недопустимые символы (# и /), с их шестнадцатеричным представлением. В третьем элементе, 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 не изменил второй элемент.

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

свернуть все

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

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'ReplacementStyle','delete' удаляет недопустимые символы.

Стиль замены, заданный как 'underscore'удаление, или 'hex'. Значение управляет, как MATLAB заменяет неалфавитно-цифровые символы. Для всех значений ReplacementStyle, MATLAB удаляет пробельные символы и изменяет строчную букву после пробела к верхнему регистру.

ReplacementStyle ЗначениеОписание
'underscore' (значение по умолчанию)Замены все символы, которые не являются буквенно-цифровым индикатором или символами нижнего подчеркивания с символами нижнего подчеркивания. 'underscore'.
'hex'Замены каждый символ, который не является алфавитно-цифровым или подчеркиванием с его соответствующим шестнадцатеричным представлением. 'hex'.
'delete'Удаляет все символы, которые не являются буквенно-цифровым индикатором или символами нижнего подчеркивания. 'delete'.

Символы, чтобы снабдить префиксом к входным параметрам, которые не начинаются с буквы после makeValidName заменяет неалфавитно-цифровые символы, заданные как скаляр строки или вектор символов. Например, по умолчанию, makeValidName символы префиксов к входу '*hello' потому что, после того, как это заменит неалфавитно-цифровые символы, вход не начинается с буквы ('_hello'). Однако, если вы задаете стиль замены, который удаляет неалфавитно-цифровые символы, makeValidName не делает символов префикса. После того, как это заменит неалфавитно-цифровые символы, вход начинается с буквы ('hello').

Допустимый префикс должен ответить следующим условиям.

  • Начаться с буквы.

  • Содержите только алфавитно-цифровые символы и символы нижнего подчеркивания.

  • Не быть ключевым словом MATLAB.

  • Не быть более длинным, чем значение namelengthmax.

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

свернуть все

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

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

Советы

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

  • Чтобы настроить замену недопустимого символа, сначала используйте функции, такие как strrep или regexprep преобразовывать в допустимые символы. Например, преобразуйте '@' символы в S к 'At' использование strrep(S,'@','At'). Затем используйте matlab.lang.makeValidName гарантировать что все символы в S допустимы.

Введенный в R2014a