exponenta event banner

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
    {'Item__'}    {'Price_Unit'}    {'x1stOrder'}    {'Contact'}

В первом и втором элементах, makeValidName заменил недопустимые символы (# и /), с подчеркиваниями. В третьем элементе, makeValidName добавленный префикс, так как символьный вектор не начинается с буквы, удаляет пустой пробел и заглавно переводит символ, следующий за удаленным пробелом.

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

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

В первом и втором элементах, makeValidName заменил недопустимые символы (# и /), с их шестнадцатеричным представлением. В третьем элементе, makeValidName добавленный префикс, так как символьный вектор не начинается с буквы, удаляет пустой пробел и заглавно переводит символ, следующий за удаленным пробелом.

Удалить недопустимые символы.

N = matlab.lang.makeValidName(S,'ReplacementStyle','delete')
N = 1x4 cell
    {'Item_'}    {'PriceUnit'}    {'x1stOrder'}    {'Contact'}

makeValidName удалил недопустимые символы (# и /). В третьем элементе, makeValidName добавленный префикс, так как символьный вектор не начинается с буквы, удаляет пустой пробел и заглавно переводит символ, следующий за удаленным пробелом.

S = {'1stMeasurement','2ndMeasurement','Control'};
N = matlab.lang.makeValidName(S,'Prefix','m_')
N = 1x3 cell
    {'m_1stMeasurement'}    {'m_2ndMeasurement'}    {'Control'}

Префиксом добавляются только элементы, не начинающиеся с буквы.

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

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

свернуть все

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

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

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

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

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

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

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

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

  • Начните с буквы.

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

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

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

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

свернуть все

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

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