matlab.lang.makeValidName

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

Описание

пример

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