MATLAB - Строки

Создание символьной строки в MATLAB довольно просто. Фактически, мы использовали его много раз. Например, вы вводите в командной строке следующее:

my_string = 'Tutorials Point'

MATLAB выполнит вышеуказанный оператор и вернет следующий результат -

my_string = Tutorials Point

MATLAB рассматривает все переменные как массивы, а строки рассматриваются как символьные массивы. Давайте использоватьwhos команда для проверки созданной выше переменной -

whos

MATLAB выполнит вышеуказанный оператор и вернет следующий результат -

Name           Size            Bytes  Class    Attributes
my_string      1x16               32  char

Интересно, что вы можете использовать числовые функции преобразования, такие как uint8 или же uint16для преобразования символов в строке в их числовые коды. Вchar функция преобразует целочисленный вектор обратно в символы -

пример

Создайте файл сценария и введите в него следующий код -

my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string)        % 8-bit ascii values
str_back_to_char= char(str_ascii)  
str_16bit = uint16(my_string)       % 16-bit ascii values
str_back_to_char = char(str_16bit)

Когда вы запускаете файл, он отображает следующий результат -

str_ascii =

   84  117  116  111  114  105   97  108   39  115   32   80  111  105  110  116

str_back_to_char = Tutorial's Point
str_16bit =

   84  117  116  111  114  105   97  108   39  115   32   80  111  105  110  116

str_back_to_char = Tutorial's Point

Прямоугольный массив символов

Строки, которые мы обсуждали до сих пор, представляют собой одномерные массивы символов; однако нам нужно хранить больше. Нам нужно хранить в нашей программе более объемные текстовые данные. Это достигается за счет создания прямоугольных массивов символов.

Самый простой способ создания прямоугольного массива символов - это объединение двух или более одномерных символьных массивов по вертикали или горизонтали по мере необходимости.

Вы можете комбинировать струны по вертикали одним из следующих способов:

  • Использование оператора конкатенации MATLAB []и разделяя каждую строку точкой с запятой (;). Обратите внимание, что в этом методе каждая строка должна содержать одинаковое количество символов. Для строк разной длины вы должны заполнить пробелами по мере необходимости.

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

пример

Создайте файл сценария и введите в него следующий код -

doc_profile = ['Zara Ali                             '; ...
               'Sr. Surgeon                          '; ...
               'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
                  'RN Tagore Cardiology Research Center')

Когда вы запускаете файл, он отображает следующий результат -

doc_profile =
Zara Ali                             
Sr. Surgeon                          
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali                            
Sr. Surgeon                         
RN Tagore Cardiology Research Center

Вы можете комбинировать строки по горизонтали одним из следующих способов:

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

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

пример

Создайте файл сценария и введите в него следующий код -

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)

Когда вы запускаете файл, он отображает следующий результат -

profile = Zara Ali      , Sr. Surgeon      , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center

Объединение строк в массив ячеек

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

Однако более эффективный способ объединения строк - преобразование результирующего массива в массив ячеек.

Массив ячеек MATLAB может содержать различные размеры и типы данных в массиве. Массивы ячеек обеспечивают более гибкий способ хранения строк различной длины.

В cellstr Функция преобразует массив символов в массив ячеек строк.

пример

Создайте файл сценария и введите в него следующий код -

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)

Когда вы запускаете файл, он отображает следующий результат -

{                                                                               
   [1,1] = Zara Ali                                                              
   [2,1] = Sr. Surgeon                                                           
   [3,1] = R N Tagore Cardiology Research Center                                 
}

Строковые функции в MATLAB

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

В следующей таблице представлено краткое описание строковых функций в MATLAB -

Функция Цель
Функции для хранения текста в массивах символов, объединения массивов символов и т. Д.
пробелы Создать строку пустых символов
Cellstr Создать массив ячеек строк из массива символов
символ Преобразовать в символьный массив (строку)
iscellstr Определите, является ли ввод массивом ячеек строк
Ischar Определите, является ли элемент массивом символов
спринт Форматировать данные в строку
strcat Объединить строки по горизонтали
strjoin Объединить строки в массиве ячеек в одну строку
Функции для определения частей строк, поиска и замены подстрок
Ischar Определите, является ли элемент массивом символов
островок Элементы массива, представляющие собой буквы алфавита
isspace Элементы массива, являющиеся пробелами
isstrprop Определить, относится ли строка к указанной категории
sscanf Чтение форматированных данных из строки
strfind Найдите одну строку в другой
strrep Найти и заменить подстроку
strsplit Разделить строку по указанному разделителю
strtok Избранные части струны
валидация Проверить правильность текстовой строки
символ Определить символьные переменные в выражении
регулярное выражение Соответствие регулярному выражению (с учетом регистра)
регулярное выражение Соответствие регулярному выражению (без учета регистра)
регулярное выражение Заменить строку регулярным выражением
regexptranslate Перевести строку в регулярное выражение
Функции для сравнения строк
strcmp Сравнить строки (с учетом регистра)
strcmpi Сравнить строки (без учета регистра)
strncmp Сравните первые n символов строк (с учетом регистра)
strncmpi Сравните первые n символов строк (без учета регистра)
Функции для преобразования строки в верхний или нижний регистр, создания или удаления пробелов
дебланк Снимите замыкающие пробелы с конца строки
Strtrim Удалите начальные и конечные пробелы из строки
ниже Преобразовать строку в нижний регистр
верхний Преобразовать строку в верхний регистр
strjust Выровнять массив символов

Примеры

Следующие примеры иллюстрируют некоторые из вышеупомянутых строковых функций.

Форматирование строк

Создайте файл сценария и введите в него следующий код -

A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)

Когда вы запускаете файл, он отображает следующий результат -

ans =  3141.592654 
   3141.59 
   +3141.59 
      3141.59 
   000003141.59

Соединение строк

Создайте файл сценария и введите в него следующий код -

%cell array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};

% Join strings in cell array into single string
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")

Когда вы запускаете файл, он отображает следующий результат -

str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange

Поиск и замена строк

Создайте файл сценария и введите в него следующий код -

students = {'Zara Ali', 'Neha Bhatnagar', ...
            'Monica Malik', 'Madhu Gautam', ...
            'Madhu Sharma', 'Bhawna Sharma',...
            'Nuha Ali', 'Reva Dutta', ...
            'Sunaina Ali', 'Sofia Kabir'};
 
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
first_names = strtok(students)

Когда вы запускаете файл, он отображает следующий результат -

new_student = 
{
   [1,1] = Poulomi Dutta
}
first_names = 
{
   [1,1] = Zara
   [1,2] = Neha
   [1,3] = Monica
   [1,4] = Madhu
   [1,5] = Madhu
   [1,6] = Bhawna
   [1,7] = Nuha
   [1,8] = Reva
   [1,9] = Sunaina
   [1,10] = Sofia
}

Сравнение строк

Создайте файл сценария и введите в него следующий код -

str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
   sprintf('%s and %s are equal', str1, str2)
else
   sprintf('%s and %s are not equal', str1, str2)
end

Когда вы запускаете файл, он отображает следующий результат -

str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal