Если вы хотите изменить строку с помощью кода, вы можете указать массив символов для удаления из строки.String.Join может использовать метод split, чтобы удалить эти символы и соединить их вместе
string s = "He<llo;< I -am a $stri-ng;";
// Add other characters that you deem unacceptable
char[] invalidChars = { ';', '<', '>', '-' };
s = String.Join("", s.Split(invalidChars));
С точки зрения сохранения исходной последовательности это очень расплывчато, поэтому я не уверен, что вы имеете в виду, но чтомне приходит в голову использовать базу данных и создать второй столбец, чтобы у вас был один для того, что они ввели, а другой для фиксированного значения.В моей голове появляются два способа управления этим
Триггером базы данных - разработайте некоторую функцию для удаления символов и сохранения в столбце с фиксированным значением.Риск в этом заключается в том, что если кто-то решит набрать символ, который вы еще не поймали в ловушку, вам не только нужно изменить функцию, но и запустить эту функцию для любой записи, которая проскальзывает на
ComputedСпецификация столбца - создайте выражение на основе функции для удаления символов и позвольте столбцу контролировать это значение. Этого достаточно, чтобы избежать риска, добавляемого через триггер.Когда вы модифицируете функцию, так как это вычисляемый столбец, теоретически это значение будет обновлено.(Поправьте меня, если я здесь не прав, не проверено, просто в теории)
Возможно, не самые эффективные подходы, но это то, что я бы использовал с моим текущим набором инструментов.