2 つの正規表現を使用できます。1 つ目は、パターン"\t|<bullet>"
(<bullet>
は箇条書きの表現を表します) を使用して、TAB と箇条書きをスペース ( " "
) に置き換えます。2 番目のパターンは、有効な文字のリストを含む否定された文字セットであり、2 番目に使用され、無効な文字を空の文字列 ( ""
) に置き換えます。つまり、無効な文字を取り除きます。CR および LF 文字 (およびスペース) を保持する必要があるため、これらを有効な文字のセットに追加する必要があります。
using System;
using System.Text.RegularExpressions;
static class Program
{
public static void Main()
{
string pattern1 = @"\t";
Regex regex1 = new Regex(pattern1, RegexOptions.Compiled);
string pattern2 = @"[^A-Za-z0-9~!#$^&*()_+|`\-=\\{}:"">?<\[\];',./ \r\n]";
Regex regex2 = new Regex(pattern2, RegexOptions.Compiled);
string input = "ABZabz09~!#$^&*()_+|`-=\\{}:\">?<[];',./ \r\nárvíztűrő\ttükörfúrógép";
string temp = regex1.Replace(input, " ");
string output = regex2.Replace(temp, "");
Console.WriteLine(input);
Console.WriteLine(output);
Console.ReadKey(true);
}
}
出力:
ABZabz09~!#$^&*()_+|`-=\{}:">?<[];',./
árvíztűrő tükörfúrógép
ABZabz09~!#$^&*()_+|`-=\{}:">?<[];',./
rvztr tkrfrgp
後の TABárvíztűrő
が単一のスペースに置き換えられていることに注意してください。
弾丸について:
Word で箇条書きリストを作成し、それを Web ページのテキスト領域にコピーしました。次に、HTML を保存したところ、箇条書きが UTF-8 でエンコードされた文字として保存されていることがわかりましたE280A2
。これは、「弾丸の表現」の上で私が呼んだものです。可能性のある箇条書き文字のバイナリ表現を見つけ出し、それらを最初のパターンに追加する必要があります。それらをタブ文字に OR するか、それらすべてを文字セットに入れます。
using System;
using System.Text;
using System.Text.RegularExpressions;
static class Program
{
public static void Main()
{
byte[] bulletBytes = new byte[] { 0xE2, 0x80, 0xA2 };
string bullet= Encoding.UTF8.GetString(bulletBytes);
string pattern1 = @"[\t" + bullet + "]";
Regex regex1 = new Regex(pattern1, RegexOptions.Compiled);
string pattern2 = @"[^A-Za-z0-9~!#$^&*()_+|`\-=\\{}:"">?<\[\];',./ \r\n]";
Regex regex2 = new Regex(pattern2, RegexOptions.Compiled);
string input =
bullet + "ABZabz09~!#$^&*()_+|`-=\\{}:\">?<[];',./ \r\n" +
bullet + "árvíztűrő\ttükörfúrógép";
string temp = regex1.Replace(input, " ");
string output = regex2.Replace(temp, "");
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine(input);
Console.WriteLine(output);
Console.ReadKey(true);
}
}
出力 (箇条書きを表示するには、コンソールのフォントを Lucida Console に変更する必要があります):
•ABZabz09~!#$^&*()_+|`-=\{}:">?<[];',./
•árvíztűrő tükörfúrógép
ABZabz09~!#$^&*()_+|`-=\{}:">?<[];',./
rvztr tkrfrgp
TAB に加えて、各行の先頭の箇条書きもスペースに置き換えられました。