#c# #json #regex #replace
#c# #json #регулярное выражение #заменить
Вопрос:
У меня есть API, который отправляет документы по электронной почте. Я использую параметр, который позволяет мне указывать сообщение электронной почты. Для этого требуются разрывы строк в формате Json ( n). Я использую регулярное выражение для экранирования текста текстового поля, как показано ниже.
string JsonMessage = string.Format("{0}n{1}", System.Text.RegularExpressions.Regex.Escape(this.txtMailMessage.Text), System.Text.RegularExpressions.Regex.Escape(this.txtMailMessage.Text));
JsonMessage = JsonMessage.Replace("r", "");
Console.WriteLine(JsonMessage);
Вот пример вывода: 5 r n5 r n5
Как показано, я пытаюсь заменить r, чтобы добиться «разрыва строки» в Json. Таким образом, это выглядело бы так: 5 n5 n5
Чего я, кажется, не могу понять, так это того, что когда я применяю JsonMessage = JsonMessage.Replace("r", "");
, это не заменяет r
Комментарии:
1. Попробуйте
JsonMessage.Replace("\r", "");
2. Выведите строку JsonMessage перед попыткой замены на консоль. Обратите внимание, что если вы видите на выходе буквально r — я имею в виду буквально обратную косую черту, за которой следует r -, то у вас нет никакого » r» в вашем JsonMessage.
"r"
представляет собой строку, содержащую только ОДИН символ; этим символом является CR (возврат каретки). Этот символ не виден, поэтому появление r в выводе консоли будет свидетельствовать о том, что в вашем JsonMessage его нет, а скорее"r"
……….."\r"
.3. @G5W Спасибо, что помогло!
Ответ №1:
Вам нужно использовать JsonMessage.Replace("\r", "");
\
Будет интерпретироваться как одна обратная косая черта.
Ответ №2:
Вместо того, чтобы заменять » r» ничем, попробуйте заменить » r n» на » n» как
string mystring = "5rn5rn5";
mystring = mystring.Replace("rn", "n");
Это приведет к «5 n5 n5»