#c# #.net #string #replace
Вопрос:
У меня есть строка, как показано ниже
Testingu001cTesting Testing Testingu001cTesting
Когда я пытаюсь отправить этот ответ Http.Response
, я получаю что-то вроде (квадратная коробка) в почтальоне.
Я хочу заменить u001c
на u{001c}
.
Я попытался сделать следующее,
myText.Replace("u001c", @"\u{001c}");
— это становится все более похожим на это\\u{001c}
myText.Replace("u001c", @"u{001c}");
— это становится все более похожим на этоu{001c}
myText.Replace("u001c", @"u{001c}");
— это становится все более похожим на это\u{001c}
myText.Replace("u001c", @"u{001c}");
— его заменяют вот так (квадратная коробка)
В чем моя ошибка?
Комментарии:
1. Ошибка, вероятно, заключается в том, как вы видите значение результата: отладчик услужливо показывает строковое значение, как если бы это был исходный код, с удвоенными обратными косыми чертами. Попробуйте использовать лупу, чтобы отобразить его как реальный текст
2. Я предполагаю, что
u001c
это один символ («разделитель полей»), указанный в его escape-последовательности кодовой точки Юникода (шестнадцатеричная 1C, десятичная 28), а не шесть символов, начинающихся с фактической обратной косой черты? Это не «печатный символ», поэтому почтальон не может его отобразить
Ответ №1:
Символ » » — это особый символ. Если вы хотите включить этот символ в строку, вы должны использовать экранирующий символ, который также является»». Так что, если вы хотите иметь «c:a.txt» тебе это нужно, чтобы написать это так «c:\a.txt». Но это затрудняет обработку адресов и URL-адресов, так как в них может быть много»». Поэтому, когда вы хотите использовать адрес, вы можете поставить @ перед строкой и позволить компилятору добавить экранирующий символ. Короче говоря, когда вы используете@»», компилятор добавляет второй. Если вы хотите заменить «u001c» на «u{001c}», вам нужно сделать, как показано ниже:
myText.Replace("\u001c", "\u{001c}");