Создание символьных массивов

Создание вектора символа

Создайте вектор символа путем включения последовательности символов в одинарные кавычки.

chr = 'Hello, world'
chr =

    'Hello, world'

Векторами символов является 1-by-n массивы типа char. В программировании строка является часто используемым термином для 1-by-n массив символов. Однако запуск в R2016b MATLAB® также обеспечивает тип данных string, таким образом, 1-by-n символьные массивы упоминается как векторы символов в документации MATLAB.

whos chr
  Name          Size            Bytes  Class    Attributes

  chr           1x12               24  char               

Если текст содержит единственную кавычку, включайте две кавычки при присвоении вектора символа.

newChr = 'You''re right'
newChr =

    'You're right'

Функции, такие как uint16, преобразовывают символы в свои цифровые коды.

chrNumeric = uint16(chr)
chrNumeric =

  1×12 uint16 row vector

    72   101   108   108   111    44    32   119   111   114   108   100

Функция char преобразовывает целочисленный вектор назад в символы.

chrAlpha = char([72 101 108 108 111 44 32 119 111 114 108 100])
chrAlpha =

    'Hello, world'

Создание прямоугольного символьного массива

Символьными массивами является m-by-n массивы символов, где m является не всегда 1. Можно соединить два или больше векторов символов вместе, чтобы создать символьный массив. Это называется конкатенацией и объяснено для числовых массивов в Создании, Конкатенации и Расширении Матриц. Как с числовыми массивами, можно объединить символьные массивы вертикально или горизонтально создать новый символьный массив.

Однако рекомендуется, чтобы вы сохранили векторы символов в массиве ячеек, вместо того, чтобы использовать m-by-n символьные массивы. Массивы ячеек являются гибкими контейнерами, которые позволяют вам легко хранить векторы символов переменной длины.

Объединение векторов символов вертикально

Чтобы объединить векторы символов в двумерный символьный массив, используйте квадратные скобки или функцию char.

  • Примените оператор конкатенации MATLAB, []. Разделите каждую строку с точкой с запятой (;). Каждая строка должна содержать то же количество символов. Например, объедините три векторов символов равной длины:

    devTitle = ['Thomas R. Lee'; ...
                'Sr. Developer'; ...
                'SFTware Corp.']
    
    devTitle =
    
      3×13 char array
    
        'Thomas R. Lee'
        'Sr. Developer'
        'SFTware Corp.'
    

    Если векторы символов имеют различные длины, клавиатуру с пробелами по мере необходимости. Например:

    mgrTitle = ['Harold A. Jorgensen      '; ...
                'Assistant Project Manager'; ...
                'SFTware Corp.            ']
    
    mgrTitle =
    
      3×25 char array
    
        'Harold A. Jorgensen      '
        'Assistant Project Manager'
        'SFTware Corp.            '
    
  • Вызовите функцию char. Если векторы символов имеют различные длины, char заполняет более короткие векторы конечными пробелами так, чтобы каждая строка имела то же количество символов.

    mgrTitle = char('Harold A. Jorgensen', ...
        'Assistant Project Manager', 'SFTware Corp.')
    mgrTitle =
    
      3×25 char array
    
        'Harold A. Jorgensen      '
        'Assistant Project Manager'
        'SFTware Corp.            '
    

Векторы комбинированного символа горизонтально

Чтобы объединить векторы символов в вектор одной строки, используйте квадратные скобки или функцию strcat.

  • Примените оператор конкатенации MATLAB, []. Разделите векторы вводимого символа запятой или пробелом. Этот метод сохраняет любые конечные пробелы во входных массивах.

    name =    'Thomas R. Lee';
    title =   'Sr. Developer';
    company = 'SFTware Corp.';
    
    fullName = [name ', ' title ', ' company]

    MATLAB возвращается

    fullName =
    
        'Thomas R. Lee, Sr. Developer, SFTware Corp.'
  • Вызовите функцию конкатенации, strcat. Этот метод удаляет конечные пробелы во входных параметрах. Например, объедините векторы символов, чтобы создать гипотетический адрес электронной почты.

    name   = 'myname   ';
    domain = 'mydomain ';
    ext    = 'com      ';
    
    address = strcat(name, '@', domain, '.', ext)

    MATLAB возвращается

    address =
    
        'myname@mydomain.com'

Идентификация символов

Используйте любую из следующих функций, чтобы идентифицировать символьный массив или определенные символы в символьном массиве.

ФункцияОписание
ischarОпределите, является ли входной параметр символьным массивом
isletterНайдите все алфавитные буквы в массиве вводимого символа
isspaceНайдите все пробелы в массиве вводимого символа
isstrpropНайдите все символы определенной категории

Найдите пробелы в векторе символа.

chr = 'Find the space characters in this character vector';
%          |   |     |          |  |    |         |
%          5   9    15         26 29   34        44

find(isspace(chr))
ans =

     5     9    15    26    29    34    44

Работа с пробелами

Функция blanks создает вектор символа пробелов. Создайте вектор 15 пробелов. Векторы символов всегда отображаются между одинарными кавычками.

chr = blanks(15)
chr =

    '               '

Вставьте несколько символов непробела посреди вектора знака пробела.

chr(6:10) = 'AAAAA'
chr =

    '     AAAAA     '

Можно выровнять по ширине расположение этих символов к левому или правому использованию функции strjust:

chrLeft = strjust(chr,'left')
chrLeft =

    'AAAAA          '
chrRight = strjust(chr,'right')
chrRight =

    '          AAAAA'

Удалите все символы конечного пробела с deblank:

chrDeblank = deblank(chr)
chrDeblank =

    '     AAAAA'

Удалите все продвижение и конечные пробелы с strtrim:

chrTrim = strtrim(chr)
chrTrim =

    'AAAAA'

Расширение символьных массивов

Generally, MathWorks® не рекомендует расширить размер существующего символьного массива путем присвоения дополнительных символов индексам вне границ массива, таким образом, что часть массива становится заполненной с нулями.

Смотрите также

| | | | |

Похожие темы

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