У меня есть строка -
125DF885DF44é112846522FF001
Я хочу удалить э из строки. Когда я ищу в Интернете, я получаю решения для удаления акцентов из э и возвращает е.
диакритический знак может находиться в любом месте строки, а не в фиксированном месте, а также может быть более одного.
Как их удалить?
Я бы рекомендовал вам подойти к проблеме с другой стороны. Какие символы разрешены? Затем отфильтруйте, чтобы оставить только те, возможно, со знаком Regex
.
Вы можете использовать это
string s = "125DF885DF44é112846522FF001";
string s1 = s.Replace("é","");
OMG, мне даже в голову не пришло попробовать метод замены. Большое спасибо.
Если у вас есть больше, чем просто é, вы можете поместить их в массив или список, прокрутить эту коллекцию и заменить каждый диакритический знак. Regex также является хорошим подходом, как упомянул @Jeremy Lakeman
Вы, наверное, хотите string s1 = s.Replace("é","e");
- примечание "e"
- заменять"é"
на "e"
, а не полностью удалить "é"
В общем случае мы можем удалить символы диапазона юникода NonSpacingMark
:
Код:
using System.Linq;
...
string source = "125DF885DF44é112846522FF001";
string result = string.Concat(source
.Normalize(NormalizationForm.FormD)
.Where(c => CharUnicodeInfo.GetUnicodeCategory(c) !=
UnicodeCategory.NonSpacingMark))
.Normalize(NormalizationForm.FormC);
Что ты пробовал? Вы пытались использовать цикл foreach и построить новую строку? Или
String.Replace("é", "");
?