この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Regex.Replace メソッド (String, String, MatchEvaluator)

 

公開日: 2016年10月

指定した入力文字列内で指定した正規表現に一致するすべての文字列を、MatchEvaluator デリゲートによって返される文字列に置換します。

名前空間:   System.Text.RegularExpressions
アセンブリ:  System (System.dll 内)

public static string Replace(
	string input,
	string pattern,
	MatchEvaluator evaluator
)

パラメーター

input
Type: System.String

一致する対象を検索する文字列。

pattern
Type: System.String

一致させる正規表現パターン。

evaluator
Type: System.Text.RegularExpressions.MatchEvaluator

各一致文字列を調べ、元の一致文字列または置換文字列のどちらかを返すカスタム メソッド。

戻り値

Type: System.String

一致する各文字列が置換文字列に置き換えられる以外は入力文字列と同じである新しい文字列。 pattern が現在のインスタンス内で一致しない場合、メソッドは現在のインスタンスを変更せずに返します。

Exception Condition
ArgumentException

正規表現の解析エラーが発生しました。

ArgumentNullException

inputpattern、または evaluatornull です。

RegexMatchTimeoutException

タイムアウトが発生しました。 タイムアウトの詳細については、「解説」をご覧ください。

Regex.Replace(String, String, MatchEvaluator)メソッドは、次の条件のいずれかが当てはまる場合は、正規表現の一致を置き換えるために役立ちます。

  • 置換文字列が正規表現置換パターンで簡単に指定できません。

  • 置換文字列、一致した文字列に対して実行されるいくつかの処理に起因します。

  • 置換文字列の結果は、条件付き処理します。

メソッドを呼び出すことと同じ、Regex.Matches(String, String)メソッドを渡す各Match、返されたオブジェクトMatchCollectionコレクションに、evaluator委任します。

patternパラメーターは、シンボルに一致する文字列で表す正規表現言語要素で構成されます。 正規表現の詳細については、次を参照してください。.NET Framework の正規表現正規表現言語 - クイック リファレンスです。

evaluatorパラメーター定義したカスタム メソッドのデリゲートは、一致した各文字列を調べる。 カスタム メソッドに次のシグネチャと一致する必要があります、MatchEvaluatorを委任します。

public string MatchEvaluatorMethod(Match match)

カスタム メソッドは、一致した入力を置換する文字列を返します。

RegexMatchTimeoutException置換操作の実行時間が、メソッドが呼び出されますアプリケーション ドメインに指定したタイムアウト間隔を超えた場合に例外がスローされます。 アプリケーション ドメインのプロパティでは、タイムアウトが定義されていない場合、またはタイムアウト値はRegex.InfiniteMatchTimeout例外はスローされません。

メソッドを返すためinput一致が存在しない場合は変更されません、行うこともできます、Object.ReferenceEqualsメソッドが入力文字列に置換を行ったかどうかを調べます。

呼び出し時の注意:

このメソッドと呼ばれるアプリケーション ドメインの既定のタイムアウト値に等しい間隔の後にタイムアウトが発生しました。 アプリケーション ドメイン、値のタイムアウト値が定義されていない場合Regex.InfiniteMatchTimeout、使用は、タイムアウトからメソッドを防ぐことができます。 評価を行い、パターン マッチを置き換えることをお勧めの静的メソッドはRegex.Replace(String, String, MatchEvaluator, RegexOptions, TimeSpan)、タイムアウト間隔を設定することができます。

次の例は、正規表現を使用して、文字列から個々 の単語を抽出しを使用して、MatchEvaluatorという名前のメソッドを呼び出すデリゲートをWordScramble単語の各文字にスクランブルをかけることです。 これを行う、WordScrambleメソッドは、一致している文字を含む配列を作成します。 ランダムな浮動小数点数を設定する並列配列が作成されます。 呼び出すことによって、配列は並べ替えられます、Array.Sort<TKey, TValue>(TKey[], TValue[], IComparer<TKey>)メソッド、および並べ替えられた配列が引数として提供される、Stringクラスのコンス トラクターです。 新しく作成されたこの文字列がによって返されるし、WordScrambleメソッドです。 正規表現パターン\w+1 つ以上の単語文字と一致する正規表現エンジンが単語以外の文字、空白文字などを検出するまでの一致に文字を追加し続けます。

using System;
using System.Collections;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string words = "letter alphabetical missing lack release " + 
                     "penchant slack acryllic laundry cease";
      string pattern = @"\w+";                            
      MatchEvaluator evaluator = new MatchEvaluator(WordScrambler);
      Console.WriteLine("Original words:");
      Console.WriteLine(words);
      Console.WriteLine();
      Console.WriteLine("Scrambled words:");
      Console.WriteLine(Regex.Replace(words, pattern, evaluator));      
   }

   public static string WordScrambler(Match match)
   {
      int arraySize = match.Value.Length;
      // Define two arrays equal to the number of letters in the match.
      double[] keys = new double[arraySize];
      char[] letters = new char[arraySize];

      // Instantiate random number generator'
      Random rnd = new Random();

      for (int ctr = 0; ctr < match.Value.Length; ctr++)
      {
         // Populate the array of keys with random numbers.
         keys[ctr] = rnd.NextDouble();
         // Assign letter to array of letters.
         letters[ctr] = match.Value[ctr];
      }         
      Array.Sort(keys, letters, 0, arraySize, Comparer.Default);      
      return new String(letters);
   }
}
// The example displays output similar to the following:
//    Original words:
//    letter alphabetical missing lack release penchant slack acryllic laundry cease
//    
//    Scrambled words:
//    elrtte iaeabatlpchl igmnssi lcka aerslee hnpatnce ksacl lialcryc dylruna ecase

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
1.1 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
Windows Phone
8.1 以降で使用可能
トップに戻る
表示: