matlab.lang.makeValidName

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

Синтаксис

N = matlab.lang.makeValidName(S)
N = matlab.lang.makeValidName(S,Name,Value)
[N, modified] = matlab.lang.makeValidName(___)

Описание

пример

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) — соответствующее значение. Имя должно появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

Символы, чтобы снабдить префиксом к входным параметрам, которые не начинаются с буквы после 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

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