ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

テキストの検索と置換

文字配列や string 配列内でテキストを検索し、部分文字列を新しいテキストに置き換えることができます。string 配列と、テキストを検索して置換する新しい関数は、R2016b で導入されました。部分文字列の検索には、contains などの関数を使用します。同様に、string 内のテキストの置換には関数 replace を、テキストの抽出には extractBetween などの関数を使用します。これらの関数はいずれも文字ベクトルと string 配列のどちらにも使用できます。互換性のために、strfindstrrep などの関数も文字ベクトルと string 配列の両方に使用できます。

テキストの検索

関数 containsstartsWithendsWith を使用して、string 配列、文字ベクトルまたは文字ベクトルの cell 配列内にあるテキストを識別します。

string を作成します。R2017a 以降、二重引用符を使用して string を作成できるようになりました。

str = "Rosemary Jones"
str = 
"Rosemary Jones"

str に部分文字列 mary が含まれているかどうかを判別します。関数 contains は、string 内のいずれかの位置に部分文字列が検出された場合に logical 1 を返します。

TF = contains(str,"mary")
TF = logical
   1

関数 strfind を使用して一致するテキストを見つけることもできます。strfind は、各一致の開始位置のインデックスを返します。この場合、marymstr の 5 番目の文字なので、strfind5 を返します。

idx = strfind(str,"mary")
idx = 5

複数の一致を検索するには strfind を使用します。複数の一致がある場合、strfind はインデックスを配列として返します。

idx = strfind(str,"s")
idx = 1×2

     3    14

多数の名前を含む string 配列を作成します。どの名前に部分文字列 Ann が含まれるかを判別します。関数 contains は、str 内の要素に Ann が含まれる位置で 1 をもつ logical 配列を返します。一致のみを含む新しい string 配列を作成するには、TF を使用して str にインデックスを付けます。

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 で始まる string を検索します。

TF = startsWith(str,"Ann");
matches = str(TF)
matches = 
"Ann Marie Young"

同様に、関数 endsWith は、指定したテキストで終わる string を検索します。

関数 containsstartsWithendsWith を使用して、文字ベクトルにテキストが含まれるかどうかを判別することもできます。

chr = 'John Paul Jones'
chr = 
'John Paul Jones'
TF = contains(chr,'Paul')
TF = logical
   1

TF = endsWith(chr,'Paul')
TF = logical
   0

関数 contains を使用して、string 配列の行内でテキストを検索します。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"

関数 contains を使用して、名前が Mary のバリエーションである行を検索します。

TF = contains(census1905(:,1),"Mary");
census1905(TF,:)
ans = 3x3 string array
    "Ann Mary"    "1905"    "230" 
    "Mary"        "1905"    "4600"
    "Maryjane"    "1905"    "304" 

テキストの置換

関数 replace を使用して、string 配列、文字ベクトルまたは文字ベクトルの cell 配列内にあるテキストを置換できます。

string を作成します。部分文字列 maryanne に置き換えます。

str = "Rosemary Jones"
str = 
"Rosemary Jones"
newStr = replace(str,"mary","anne")
newStr = 
"Roseanne Jones"

関数 strrep を使用してテキストを置き換えることもできます。ただし、関数 replace を推奨します。

newStr = strrep(str,"Jones","Day")
newStr = 
"Rosemary Day"

多数の名前を含む string 配列を作成します。

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"

文字ベクトルのテキストを置き換えます。replacereplaceBetween は、文字ベクトルでも string でも使用できます。

chr = 'Mercury, Gemini, Apollo'
chr = 
'Mercury, Gemini, Apollo'
replace(chr,'Gemini','Mars')
ans = 
'Mercury, Mars, Apollo'

ファイル名の string 配列内のテキストを置き換えます。ファイル名を Web サイトのアドレスに追加します。ファイル名には空白が含まれますが、空白は Web アドレスの一部として使用できません。空白文字 " " を、Web アドレスの標準である %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"

ファイル名を Web サイトのアドレスに追加します。

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"

テキストの抽出

関数 extractAfterextractBeforeextractBetween を使用して、string 配列または文字ベクトルから部分文字列を抽出します。これらの関数を使用して、指定したテキストの前、後、あるいは間にある部分文字列を抽出します。

ファイル名を含む string 配列を作成します。関数 extractAfter を使用して、名前の C:\Temp\ の後の部分を抽出します。

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 タグ内に名前がエンコードされる string 配列から顧客名を抽出します。

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"

参考

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

関連するトピック