2015-03-23 6 views
0

У меня есть список допустимых символов, и мне нужна функция C#, которую мы можем проверить, если текст содержит символы, которые не разрешены, и если мы найдем символ несанкционированный, заменим его возвратом каретки (\r или \n).найти и заменить специальный символ неавторизованный

Например:

String ListCharactersAllowed = "¥ó;abcdefghijklmnopqrstuvwxyz123456789}{ "; 
String input = @"thîs is @ string text"; 

Результат будет выглядеть следующим образом:

String value="th"+((char)13)+"s is "+((char)13)+" string text" 
+1

«Извините за мой плохой английский» не проблема, но я действительно пропустил ваш подход. –

+0

Попробуйте выполнить поиск в первую очередь. Ключевое слово, которое вы ищете, это «белый список», поэтому используйте поисковые запросы, такие как «C# string replace whitelist». Если вы делали поиск и делали что-то, но это не сработало, покажите это в своем вопросе. – CodeCaster

ответ

0

Вы могли бы использовать этот подход LINQ:

var newCharacters = input.Select(c => ListCharactersAllowed.Contains(c) ? c : (char)13); 
String result = String.Concat(newCharacters); 

Если вы не можете использовать использовать LINQ после StringBuilder подход, который еще эффективнее:

var newString = new StringBuilder(input.Length); 
foreach (char c in input) 
    newString.Append(ListCharactersAllowed.IndexOf(c) >= 0 ? c : (char)13); 
String result = newString.ToString(); 

Вместо ListCharactersAllowed.IndexOf(c) >= 0 вы можете также использовать ListCharactersAllowed.Contains(c.ToString()), чтобы избежать (не) Enumerable.Contains в Карелии звонок. Первое немного более эффективно.

+0

Я использую фреймворк 3 Я не могу выполнить свой код в моем случае – Aimar

+0

@Aimar: отредактировал мой ответ. –

+0

этот код также я не могу его выполнить, я не использую фреймворк 4 – Aimar

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