Можно искать текст в символьных массивах и строковых массивах, и заменить подстроки на новый текст. Строковые массивы и новые функции, чтобы искать и заменить текст, были введены в R2016b. Ищите подстроки с функциями, такими как функция contains
. Точно так же замените текст в строках с функцией replace
или извлеките текст с функциями, такими как extractBetween
. Можно использовать любую из этих функций или с векторами символов или со строковыми массивами. Для совместимости можно также использовать функции, такие как strfind
и strrep
и с векторами символов и со строковыми массивами.
Идентифицируйте текст в строковых массивах, векторах символов или массивах ячеек из символьных векторов с contains
, startsWith
и функцией endsWith
.
Создайте строку. Начиная в R2017a, можно создать строки с помощью двойных кавычек.
str = "Rosemary Jones"
str = "Rosemary Jones"
Определите, содержит ли str
подстроку mary
. Функция contains
возвращает логический 1
, если она находит подстроку каким-либо местом в строке.
TF = contains(str,"mary")
TF = logical
1
Можно также использовать функцию strfind
, чтобы найти совпавший текст. strfind
возвращает индекс запуска каждого соответствия. В этом случае strfind
возвращает 5
, потому что m
в mary
является пятым символом str
.
idx = strfind(str,"mary")
idx = 5
Найдите несколько соответствий с strfind
. Когда существует несколько соответствий, strfind
возвращает индексы как массив.
idx = strfind(str,"s")
idx = 1×2
3 14
Создайте массив строк, который содержит много имен. Определите, какие имена содержат подстроку Ann
. Функция contains
возвращает логический массив, который имеет 1
везде, где str
имеет элемент, который содержит Ann
. Создать новый массив строк, который включает только соответствия, индекс в str
с TF
.
str = ["Rosemary Ann Jones","Peter Michael Smith","Ann Marie Young"]
str = 1x3 string array
"Rosemary Ann Jones" "Peter Michael Smith" "Ann Marie Young"
TF = contains(str,"Ann")
TF = 1x3 logical array
1 0 1
matches = str(TF)
matches = 1x2 string array
"Rosemary Ann Jones" "Ann Marie Young"
Найдите строки, которые начинаются с Ann
.
TF = startsWith(str,"Ann");
matches = str(TF)
matches = "Ann Marie Young"
Точно так же строки поиска функции endsWith
, которые заканчиваются заданной частью текста.
Можно также использовать contains
, startsWith
и функции endsWith
, чтобы определить, содержат ли векторы символов текст.
chr = 'John Paul Jones'
chr = 'John Paul Jones'
TF = contains(chr,'Paul')
TF = logical
1
TF = endsWith(chr,'Paul')
TF = logical
0
Используйте функцию contains
, чтобы найти текст в строках массива строк. census1905
содержит несколько строк моделируемых данных о переписи в течение года 1905. Каждая строка содержит имя, год рождения и число раз, которое имя было дано в том году.
census1905 = ["Ann Mary","1905","230"; "John","1905","5400"; "Mary","1905","4600"; "Maryjane","1905","304"; "Paul","1905","1206"];
Найдите строки, где имя равно Mary
.
TF = (census1905(:,1) == "Mary");
census1905(TF,:)
ans = 1x3 string array
"Mary" "1905" "4600"
Найдите строки, где имя является изменением Mary
с функцией contains
.
TF = contains(census1905(:,1),"Mary");
census1905(TF,:)
ans = 3x3 string array
"Ann Mary" "1905" "230"
"Mary" "1905" "4600"
"Maryjane" "1905" "304"
Можно заменить текст в строковых массивах, векторах символов или массивах ячеек из символьных векторов с функцией replace
.
Создайте строку. Замените подстроку mary
на anne
.
str = "Rosemary Jones"
str = "Rosemary Jones"
newStr = replace(str,"mary","anne")
newStr = "Roseanne Jones"
Можно также заменить текст с помощью функции strrep
. Однако функция replace
рекомендуется.
newStr = strrep(str,"Jones","Day")
newStr = "Rosemary Day"
Создайте массив строк, который содержит много имен.
str = ["Rosemary Ann Jones","Peter Michael Smith","Ann Marie Young"]
str = 1x3 string array
"Rosemary Ann Jones" "Peter Michael Smith" "Ann Marie Young"
Задайте несколько имен к замене.
oldText = ["Ann","Michael"]; newText = ["Beth","John"]; newStr = replace(str,oldText,newText)
newStr = 1x3 string array
"Rosemary Beth Jones" "Peter John Smith" "Beth Marie Young"
Замените текст в векторе символов. Можно использовать replace
и replaceBetween
с векторами символов, а также со строками.
chr = 'Mercury, Gemini, Apollo'
chr = 'Mercury, Gemini, Apollo'
replace(chr,'Gemini','Mars')
ans = 'Mercury, Mars, Apollo'
Замените текст в массиве строк имен файлов. Добавьте имена файлов к адресу веб-сайта. Имена файлов содержат пробелы, но пробелы не могут быть частью веб-адресов. Замените пробел, " "
, с %20
, который является стандартом для веб-адресов.
str = ["Financial Report.docx"; "Quarterly 2015 Details.docx"; "Slides.pptx"]
str = 3x1 string array
"Financial Report.docx"
"Quarterly 2015 Details.docx"
"Slides.pptx"
newStr = replace(str," ","%20")
newStr = 3x1 string array
"Financial%20Report.docx"
"Quarterly%202015%20Details.docx"
"Slides.pptx"
Добавьте имена файлов к адресу веб-сайта.
filenames = "http://example.com/Documents/" + newStr
filenames = 3x1 string array
"http://example.com/Documents/Financial%20Report.docx"
"http://example.com/Documents/Quarterly%202015%20Details.docx"
"http://example.com/Documents/Slides.pptx"
Извлеките подстроку от строковых массивов или векторов символов с extractAfter
, extractBefore
и функциями extractBetween
. Используйте эти функции, чтобы извлечь различные подстроки, которые предшествуют, следуют или происходят между заданными частями текста.
Создайте массив строк, который содержит имена файлов. Извлеките фрагменты имен после C:\Temp\
с функцией extractAfter
.
str = ["C:\Temp\MyReport.docx"; "C:\Temp\Data\Sample1.csv"; "C:\Temp\Slides.pptx"]
str = 3x1 string array
"C:\Temp\MyReport.docx"
"C:\Temp\Data\Sample1.csv"
"C:\Temp\Slides.pptx"
filenames = extractAfter(str,"C:\Temp\")
filenames = 3x1 string array
"MyReport.docx"
"Data\Sample1.csv"
"Slides.pptx"
Извлеките имена клиента от массива строк, который кодирует имена в XML-тэгах.
str = ["<CustomerName>Elizabeth Day</CustomerName>"; "<CustomerName>George Adams</CustomerName>"; "<CustomerName>Sarah Young</CustomerName>"]
str = 3x1 string array
"<CustomerName>Elizabeth Day</CustomerName>"
"<CustomerName>George Adams</CustomerName>"
"<CustomerName>Sarah Young</CustomerName>"
names = extractBetween(str,"<CustomerName>","</CustomerName>")
names = 3x1 string array
"Elizabeth Day"
"George Adams"
"Sarah Young"
contains
| endsWith
| erase
| eraseBetween
| extractAfter
| extractBefore
| extractBetween
| insertAfter
| insertBefore
| replace
| replaceBetween
| startsWith
| strfind
| strrep