문자열에서 \\ u0000을 제거 할 수 없습니다. [중복]
Nov 12 2020
다음 정보가 포함 된 문자열을 반환하는 API를 호출하고 "abc \\u0000\\u0000 fjkdshf"
있습니다.. 다음 코드를 사용하여 이것을 제거하려고 시도했지만 작동하지 않는 것 같습니다.
string res = str.Replace("\\", string.Empty)
.Replace("u0000", string.Empty)
.Trim();
Visual Studio를 사용하여 디버깅하지 않을 때이 문자열이 실제로 표시되지 않는다는 기사를 몇 개 읽었으므로이 문제를 해결하는 방법을 모르겠습니다. 도와주세요!
답변
1 MongZhu Nov 12 2020 at 21:20
이중 백 슬래시를 실제 문자로 착각합니다. 두 번째 백 슬래시는 이스케이프되고 첫 번째는 이스케이프 문자 로 사용되기 때문에 디버거에 표시됩니다 . 교체하려면 "\u0000"
.
다음은 각 문자의 UTF 코드를 인쇄하는 예제 프로그램입니다.
void Main()
{
string s = "abc \u0000\u0000 fjkdshf";
Console.WriteLine(string.Join(" ", s.Select(x => Convert.ToInt32(x))));
string res = s.Replace("\u0000", string.Empty);
Console.WriteLine(string.Join(" ", res.Select(x => Convert.ToInt32(x))));
}
산출:
97 98 99 32
0 0
32 102106107100115104102
97 98 99 32 32102106107100115104102
출력에서 볼 수 있듯이 교체 후 0이 사라졌습니다!
리터럴 문자열 이스케이프 에 대한 추가 정보