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

Сравните текст в символьных массивах и массивах строк по-разному. Массивы строк были представлены в 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

Смотрите также

| | | | | | | | | |

Похожие темы

Была ли эта тема полезной?