2016-08-03 2 views
1

문자열에 두 개의 백 슬래시가있는 경우. 그들 사이에 공간을 추가해야합니다. 위의 코드에서 if 조건에 "utf-16 코드 단위로 문자를 나타냅니다"오류가 발생합니다. 왜냐하면, 이것을 사용하여, 나는 PDF 파일을 생성하고 있기 때문이다. 미리 감사드립니다.은 utf-16 코드 단위로 문자를 나타냅니다.

+0

코드가 컴파일되지 않습니다. '\ '는 이스케이프 문자열을 나타내며,'\ "는 실제로 큰 따옴표를 이스케이프 (escape)하는 방법입니다. 질문 자체의 구문 색칠은''\"&& data [i-1] == "' 끈 –

답변

1

이 코드 조각 위에 마우스를 유혹 할 때 당신이 얻을 메시지 :이 줄 "\" :

if (data[i] == "\" && data[i-1] == "\") 

실제로없는 오류하지만 클래스 String의 코멘트/설명입니다.

백 슬래시는 escape sequence을 나타내는 데 사용됩니다. 설명서에 표시되는 내용은 다음과 같습니다.

백 슬래시 (\) 다음에 문자 또는 숫자 조합으로 구성된 문자 조합을 "이스케이프 시퀀스"라고합니다. 개행 문자, 작은 따옴표 또는 문자 상수의 특정 문자를 나타내려면 이스케이프 시퀀스를 사용해야합니다. 이스케이프 시퀀스는 단일 문자로 간주되므로 문자 상수로 유효합니다. 컴파일러는 당신이 \"를 사용할 때 문자열에서 문자로 "을 갖고 싶어 생각하기 때문에

혼란이 발생한다. 이것이 인텔리 센스가 string의 색으로 줄의 나머지 부분에 백 슬래시가없는 "이 발견 될 때까지 표시하는 이유입니다.

당신은 그대로 해석 될 문자열을 강제로 @ 연산자를 사용할 수 있으므로 백 슬래시는 캐릭터가 될 것이다 :

if (data[i] == @"\" && data[i-1] == @"\") 

와 코드를 컴파일 가능한된다.

i이 0 일 때 루프가 첫 번째 반복에서 중단됩니다. data은 -1로 색인을 생성 할 수 없기 때문입니다. 두 개의 연속되는 백 슬래시 사이에 공백을 넣는 것이 다른 접근 방법을 제안합니다.

당신은 단순히이 같은 Replace 방법을 사용할 수 있습니다

string s = @"\(Nested \(parentheses\) dont need a backslash.\) \(But a single \\(parenthe)"; 

s = s.Replace(@"\\", @"\ \"); 

내가 꽤 data 배열이 코드에서 활약하지만, 당신은 또한 StringBuilder

StringBuilder builder = new StringBuilder(); 
builder.Append(@" \(Nested \(parentheses\) dont need a backslash.\) \(But a single \\(parenthe)"); 

builder.Replace(@"\\", @"\ \"); 
와 함께 할 수있는 역할을 이해하지 않는다
관련 문제