Поиск и замена текста

Можно искать текст в символьных массивах и массивах строк, и заменить подстроки на новый текст. Массивы строк и новые функции, чтобы искать и заменить текст, были представлены в 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"

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

| | | | | | | | | | | | |

Похожие темы

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