Сравните текст символьных массивов и строковых массивов по-разному. Строковые массивы были введены в 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. The 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
персонажи. Можно также использовать strcmpi
и strncmpi
для бездатчиковых сравнений.
Сравните два векторов символов с strcmp
функция. chr1
и chr2
не равны.
chr1 = 'hello'; chr2 = 'help'; TF = strcmp(chr1,chr2)
TF = logical
0
Обратите внимание, что MATLAB strcmp
отличается от версии на 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
функций.
The isstrprop
просматривает символы в строковые массивы или символьные массивы.
The 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
The 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