文字列内の文字列を見つけて強調表示できるようにしたいのですが、スペースを削除したくありません。
したがって、元の文字列が次の場合:
猿は12匹
「 12 mon 」を見つけて、末尾が で終わる文字を強調表示したい:
< font color='red' >12文< /font >キーあり
しかし、「 12mon 」を検索しても同じ結果が必要です(今回はスペースがありません)
これは本当に私の心を曲げました!正規表現でできると確信しています。
*
スペースがオプションであることを指定し、クラスReplace
のメソッドを使用するために使用します。Regex
var input = "There are 12 monkeys";
var result = Regex.Replace(input, @"12\s*mon", @"<font color='red'>$0</font>");
そして結果は次のとおりです。
There are <font color='red'>12 mon</font>keys
1\s?2\s?m\s?o\s?n\s? を正規表現できますか?
正規表現を生成する関数を作成する必要がありますが、それほど難しくはありません。正規表現を作成したときに実際のスペースを含めなかったことに注意してください...
コンスタンティンの答えは、スペースが他の場所にあるかどうかを考慮していません。代わりに、ユーザーが検索したい入力を取得し、すべての位置に「\w*」を挿入すると、可能な検索がすべて見つかります。
var searchTerm = "eare1";
var input = "There are 12 monkeys";
var result = Regex.Replace(input, @"e\s*a\s*r\s*e\s*1", @"<font color='red'>$0</font>");
結果は次のとおりです。
Ther<font color='red'>e are 1</font>2 monkeys
これは十分に高速です。これははるかにきれいです。元の文字列と次の文字列の両方を検索するだけです。
originalString.ToCharArray().Where(c => !Char.IsWhiteSpace(c));
とにかく、ほとんどの処理時間はHTML文字列の再構築に費やされると思うので、char配列への解析のコストは大きな問題にはなりません。