Сравните текст в символьных массивах и массивах строк по-разному. Массивы строк были представлены в R2016b. Можно сравнить массивы строк и векторы символов с операторами отношения и с функцией strcmp
. Можно отсортировать массивы строк с помощью функции sort
, как вы отсортировали бы массивы любого другого типа. MATLAB® также обеспечивает функции, чтобы осмотреть символы в частях текста. Например, можно определить, какие символы в векторе символа или массиве строк являются буквами или пробелами.
Можно сравнить массивы строк для равенства с операторами отношения ==
и ~=
. Когда вы сравниваете массивы строк, вывод является логическим массивом, который имеет 1
, где отношение верно, и 0
, где это не верно.
Создайте два скаляра строки. Начиная в R2017a, можно создать строки с помощью двойных кавычек.
str1 = "Hello"; str2 = "World"; str1,str2
str1 = "Hello"
str2 = "World"
Сравните str1
и str2
для равенства.
str1 == str2
ans = logical
0
Сравните массив строк с несколькими элементами к скаляру строки.
str1 = ["Mercury","Gemini","Apollo";... "Skylab","Skylab B","International Space Station"]; str2 = "Apollo"; str1 == str2
ans = 2x3 logical array
0 0 1
0 0 0
Сравните массив строк с вектором символа. Целая одна из переменных является массивом строк, можно сделать сравнение.
chr = 'Gemini';
TF = (str1 == chr)
TF = 2x3 logical array
0 1 0
0 0 0
Индексируйте в str1
с TF
, чтобы извлечь строковые элементы, которые совпадали с Gemini
. Можно использовать логические массивы, чтобы индексировать в массив.
str1(TF)
ans = "Gemini"
Сравните для неравенства с помощью оператора ~=
. Индексируйте в str1
, чтобы извлечь элементы, которые не совпадают с 'Gemini'
.
TF = (str1 ~= chr)
TF = 2x3 logical array
1 0 1
1 1 1
str1(TF)
ans = 5x1 string array
"Mercury"
"Skylab"
"Skylab B"
"Apollo"
"International Space Station"
Сравните два нескалярных массива строк. Когда вы сравниваете два нескалярных массива, они должны быть одного размера.
str2 = ["Mercury","Mars","Apollo";... "Jupiter","Saturn","Neptune"]; TF = (str1 == str2)
TF = 2x3 logical array
1 0 1
0 0 0
Индексируйте в str1
, чтобы извлечь соответствия.
str1(TF)
ans = 2x1 string array
"Mercury"
"Apollo"
Можно также сравнить строки с операторами отношения >
, >=
, <
и <=
. Строки, которые запускаются с прописных букв, прибывают перед строками, которые запускаются со строчных букв. Например, строка "ABC"
является меньше, чем "abc"
. Цифры и некоторые знаки препинания также прибывают перед буквами.
"ABC" < "abc"
ans = logical
1
Сравните массив строк, который содержит имена к другому имени с оператором >
. Sanchez
имен, de Ponte
и Nash
прибывают после Matthews
, потому что S
, d
и N
все больше, чем M
.
str = ["Sanchez","Jones","de Ponte","Crosby","Nash"]; TF = (str > "Matthews")
TF = 1x5 logical array
1 0 1 0 1
str(TF)
ans = 1x3 string array
"Sanchez" "de Ponte" "Nash"
Можно отсортировать массивы строк. MATLAB® хранит символы как Unicode® с помощью схемы кодировки символов UTF-16. Символьные массивы и массивы строк сортируются согласно порядку кодовой точки UTF-16. Для символов, которые являются также символами ASCII, этот порядок означает, что прописные письма приходят перед строчными буквами. Цифры и некоторая пунктуация также прибывают перед буквами.
Сортировка массива строк str
.
sort(str)
ans = 1x5 string array
"Crosby" "Jones" "Nash" "Sanchez" "de Ponte"
Сортировка 2 3 массива строк. Функция sort
сортирует элементы в каждом столбце отдельно.
sort(str2)
ans = 2x3 string array
"Jupiter" "Mars" "Apollo"
"Mercury" "Saturn" "Neptune"
Отсортировать элементы в каждой строке, вид str2
вдоль второго измерения.
sort(str2,2)
ans = 2x3 string array
"Apollo" "Mars" "Mercury"
"Jupiter" "Neptune" "Saturn"
Можно сравнить векторы символов и массивы ячеек из символьных векторов друг другу. Используйте функцию strcmp
, чтобы сравнить два векторов символов или strncmp
, чтобы сравнить первые символы N
. Также можно использовать strcmpi
и strncmpi
для нечувствительных к регистру сравнений.
Сравните два векторов символов с функцией strcmp
. chr1
и chr2
не равны.
chr1 = 'hello'; chr2 = 'help'; TF = strcmp(chr1,chr2)
TF = logical
0
Обратите внимание на то, что strcmp
MATLAB отличается от версии C strcmp
. Версия C strcmp
возвращает 0
, когда два символьных массива являются тем же самым, не, когда они отличаются.
Сравните первые два символа с функцией strncmp
. TF
является 1
, потому что оба векторов символов запускают с символов he
.
TF = strncmp(chr1,chr2,2)
TF = logical
1
Сравнение двух Массивов ячеек из символьных векторов. strcmp
возвращает логический массив, который одного размера как массивы ячеек.
C1 = {'pizza'; 'chips'; 'candy'}; C2 = {'pizza'; 'chocolate'; 'pretzels'}; strcmp(C1,C2)
ans = 3x1 logical array
1
0
0
Можно осмотреть символы в массивах строк или символьных массивах с isstrprop
, isletter
и функциями isspace
.
isstrprop
осматривает символы или в массивах строк или в символьных массивах.
isletter
и функции isspace
осматривают символы в символьных массивах только.
Определите, какие символы в векторе символа являются пробелами. isspace
возвращает логический вектор, который одного размера как chr
.
chr = 'Four score and seven years ago';
TF = isspace(chr)
TF = 1x30 logical array
0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0
Функция isstrprop
может запросить символы для многих различных черт. isstrprop
может определить, являются ли символы в строке или векторе символа буквами, алфавитно-цифровыми символами, десятичными или шестнадцатеричными цифрами или символами пунктуации.
Определите, какие символы в строке являются знаками препинания. isstrprop
возвращает логический вектор, длина которого равна количеству символов в str
.
str = "A horse! A horse! My kingdom for a horse!"
str = "A horse! A horse! My kingdom for a horse!"
isstrprop(str,"punct")
ans = 1x41 logical array
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Определите, какие символы в векторе символа chr
является буквами.
isstrprop(chr,"alpha")
ans = 1x30 logical array
1 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1
eq
| ge
| >
| isletter
| isspace
| isstrprop
| le
| <
| ne
| вид
| strcmp