Я работаю над созданием фида продуктов для сторонней компании. Данные, с которыми я работаю, имеют всевозможные недействительные, специальные символы, двойной интервал и т. Д. Они также запросили, чтобы данные кодировались в формате HTML, где используются специальные символы.Удаление специальных и недопустимых символов в строке
Примером некоторые данные, которые будут переданы = «Купить Кухня
Aid Artisan ™ Стенд Смеситель 4.8L»
try
{
var removeDoubleSpace = Regex.Replace(stringInput, @"\s+", " ");
var encodedString = HttpUtility.HtmlEncode(removeDoubleSpace).Trim();
var encodedAndLineBreaksRemoved = encodedString.Replace(Environment.NewLine, "");
var finalStringOutput = Regex.Replace(encodedAndLineBreaksRemoved, @"(™)|(’)|(”)|(–)", "");
return finalStringOutput;
}
catch (Exception)
{
return stringInput;
}
Я пытался придумать один метод, который можно было бы назвать, сделать все выше, более чистым способом, а не несколькими выражениями Regex
. Или, может быть, существует только одно регулярное выражение, которое охватывает все?
Вы всегда могли бы написать функцию, которая перечисляет все символы в представленной строке, и проверка каждый символ для действительности (или пары действительности, т. е. проблема с пространством). Вы можете написать его, чтобы он перечислял их все только один раз, вместо выполнения нескольких регулярных выражений и замен. –
Мои 2 цента: * Не беспокойтесь. * Если вам это удастся, вы, вероятно, закончите с длинным, сложным, трудночитаемым и в основном * страшным * регулярным выражением. Лучше сделать 2, 3, даже 10 заменить действия и сохранить читаемый код, если только вы не столкнулись с ужасными проблемами производительности. –
Мой пример теперь более полный и разделяет все, что НЕ является символом ASCII, используя белый список. –