Сравните текст в символьных массивах и строковых массивах по-разному. Строковые массивы были введены в 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
"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
"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
"Sanchez" "de Ponte" "Nash"
Можно отсортировать строковые массивы. MATLAB® хранит символы как Unicode® с помощью схемы кодировки символов UTF-16. Символьные массивы и строковые массивы сортируются согласно порядку кодовой точки UTF-16. Для символов, которые являются также символами ASCII, этот порядок означает, что прописные письма приходят перед строчными буквами. Цифры и некоторая пунктуация также прибывают перед буквами.
Сортировка массива строк str
.
sort(str)
ans = 1x5 string
"Crosby" "Jones" "Nash" "Sanchez" "de Ponte"
Сортировка 2 3 массива строк. sort
функциональные виды элементы в каждом столбце отдельно.
sort(str2)
ans = 2x3 string
"Jupiter" "Mars" "Apollo"
"Mercury" "Saturn" "Neptune"
Отсортировать элементы в каждой строке, вид str2
вдоль второго измерения.
sort(str2,2)
ans = 2x3 string
"Apollo" "Mars" "Mercury"
"Jupiter" "Neptune" "Saturn"
Можно сравнить векторы символов и массивы ячеек из символьных векторов друг другу. Используйте strcmp
функция, чтобы сравнить два вектора символов или strncmp
сравнить первый N
'characters'. Также можно использовать 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
strcmp
| sort
| isstrprop
| isletter
| isspace
| eq
| ne
| gt
| ge
| le
| lt