Сравните текст в символьных массивах и строковых массивах по-разному. Строковые массивы были введены в 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, потому что SD, и 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
Можно смотреть символы в строковых массивах или символьных массивах с isstrpropisletter, и 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 | gt | isletter | isspace | isstrprop | le | lt | ne | sort | strcmp