2016-12-06 13 views
-1

cの私は、文字列から絵文字を削除したいが、それは私がの/考えたいくつかのオプション比べどのように文字列から非ASCII文字を削除 - #

string str = "Hello world ☀⛿"; 
string result = Regex.Replace(str, @"\p{Cs}", ""); 
+0

正規表現は何をすべきですか?あなたの目的には遠く離れているようにも見えません。 – Andrew

+1

私は解決策が盲目的に取られていると思います。http://stackoverflow.com/a/28025891/3832970 –

+0

Jon Skeetがそれを示唆していれば、それはうまくいくはずです。私はそれをサポートしていないオンラインの正規表現のページで試してみました。 – Andrew

答えて

3

動作しません:

string text = "Hello world ☀⛿END"; 

Console.WriteLine(text); 
Console.WriteLine(Regex.Replace(text, @"\p{Cs}", "")); 
Console.WriteLine(Regex.Replace(text, @"[^\u0000-\u007F]+", "")); 
Console.WriteLine(text.Where(c => !Char.IsSurrogate(c)).ToArray()); 

をそして、これが結果です:

Hello world ??????END 
Hello world ??END 
Hello world END 
Hello world ??END 

ここに貼り付け、コピーされた後、あなたの入力文字列が、再度コピーおよびVIに貼り付けた場合、私はわかりませんスタジオはこのプロセスでいくつかの変更を受けていますが、私が見ていることから、明らかに2番目の選択肢がうまくいくようです。

すべての特殊文字を削除しますか?絵文字のみを削除しますか?

+0

Regex.Replace(str、@ "[^ \ u0000- \ u007F] +"、 "");作品と感謝 – asa

+1

しかし、それは "emojis"にマッチするだけでなく、それはキリル文字などを削除します。 –

+0

正確に。私の推測では、@asaは*奇妙な*文字を削除するだけで、特別なものは期待していないということです。そうですか? – Andrew

関連する問題