web-dev-qa-db-ja.com

多くの異なる言語、ユニコード文字が混在するテキスト内の非印刷可能文字および制御文字を削除するC#正規表現

使用する文字の範囲がわからないため、または[[:cntrl:]]のような文字クラスがルビーで見つかった場合、私はこれに関するあなたの助けに感謝しますか?

非印刷可能とは、入力文字列を印刷するときに、出力に表示されないすべての文字を削除することを意味します。注意してください、私はC#の正規表現を探します、私のコードに問題はありません

14
foksoho

以下を使用して、すべての制御文字およびその他の印刷不能文字を削除できます。

s = Regex.Replace(s, @"\p{C}+", string.Empty);

\p{C} Unicodeカテゴリクラスは、ASCIIテーブル以外のものも含めて、すべての制御文字に一致します。NETでは、UnicodeカテゴリクラスはデフォルトでUnicode対応です。

33

で試すことができます:

string s = "Täkörgåsmrgås";
s = Regex.Replace(s, @"[^\u0000-\u007F]+", string.Empty);

印刷できない文字に関するドキュメント: https://en.wikipedia.org/wiki/Control_character

Char.IsControlメソッド:

https://msdn.Microsoft.com/en-us/library/system.char.iscontrol.aspx

たぶんあなたは試すことができます:

string input; // this is your input string
string output = new string(input.Where(c => !char.IsControl(c)).ToArray());
3
Yanga