2016-12-06 5 views
-1

Я хочу удалить смайлик из строки, но он не работаетКак удалить не-ASCII из строки - C#

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

Что должно делать это регулярное выражение? Это не выглядит даже отдаленно полезным для вашей цели. – Andrew

+1

Я думаю, что решение вслепую взято из http://stackoverflow.com/a/28025891/3832970 –

+0

О, если Джон Скит предложил это, тогда он должен работать. Я просто попробовал это с онлайн-страницей регулярных выражений, которая не поддерживает это. – 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 sual Studio испытывает некоторые изменения в процессе, но из того, что я вижу, очевидно, что второй вариант работает лучше.

Вы хотите удалить все специальные символы или только emoji?

+0

Regex.Replace (str, @ "[^ \ u0000- \ u007F] +", ""); работает и спасибо – asa

+1

Однако он не только соответствует «emojis», он будет удалять кириллические буквы и многое другое. –

+0

Точно. Я предполагаю, что @asa просто нужно удалить * странные * персонажи и не ожидает ничего особенного. Это правильно? – Andrew

 Смежные вопросы

  • Нет связанных вопросов^_^