2011-12-05 2 views
23

에서 문자는 다음 코드 내가 궁금하고있는 라인에 코멘트 그물을 추가 한제거 ''문자열 C#을

string line = ""; 

while ((line = stringReader.ReadLine()) != null) 
{ 
    // split the lines 
    for (int c = 0; c < line.Length; c++) 
    { 
     if (line[c] == ',' && line[c - 1] == '"' && line[c + 1] == '"') 
     { 
      line.Trim(new char[] {'\\'}); // <------ 
      lineBreakOne = line.Substring(1, c - 2); 
      lineBreakTwo = line.Substring(c + 2, line.Length - 2); 
     } 
    } 
} 

있습니다. 문자열에서 '\'문자를 모두 제거하고 싶습니다. 이것이 올바른 방법일까요? 나는 일하지 않는다. 모든 \는 여전히 문자열에 있습니다.

+0

은'트림 교체 종료. 그 (것)들은 그 (것)들을 떨어져 버린다. @ user978511이 말한 것처럼'Replace ("\\", "")'를 사용할 수 있습니다. (참고로 @ 문자를 사용하면 "이스케이프 규칙을 적용하지 않고이 문자열을 그대로 사용하십시오"라는 의미입니다.) – JohnL

+0

아래 해결책 중 어느 것도 나를 위해 작동하지 않습니다 ... – rsy

+0

Regex.Unescape() – Alexander

답변

75

당신은 사용할 수 있습니다

line.Replace(@"\", ""); 

또는

line.Replace(@"\", string.Empty); 
+2

바꾸기가 문자열 자체를 변경하지 않기 때문입니다 , 변경된 문자열을 리턴합니다. 그래서 내 대답과 같이해야하고,'line = line.Rep ... '이라고 쓰십시오. –

+1

이들은 슬래시가 아닙니다. 이들은 이스케이프 문자입니다. 따옴표를 이스케이프하기 위해 여기에 사용됩니다. 큰 따옴표 대신 작은 따옴표 사용을 고려하십시오. 그곳에는 슬래시가 필요하지 않습니다. –

+1

@PoiXen - 게시 한 문자열에서'\ "는 문자열에'''을 표시하는 이스케이프 시퀀스입니다. 거기에 백 슬래시 문자가 없습니다. – Oded

4

이유는 단순히이?

resultString = Regex.Replace(subjectString, @"\\", ""); 
+1

"\\"또는 @ " \ "안 그래? –

+1

@BaliC 실제로는 없습니다. ** "\"**를 사용하면 패턴 끝에 "\"- Illegal \을 구문 분석합니다. .NET 3.5 – FailedDev

4

모두 제거

String sOld = ...; 
String sNew =  sOld.Replace("\\", String.Empty); 
3

를 사용해보십시오 '\'문자열에서, 단순히 다음을 수행하십시오

myString = myString.Replace("\\", ""); 
8

당신은 기본적으로 모든 항목을 제거하는 String.Replace을 사용할 수 있습니다

line.Replace(@"\", ""); 
2

Trim은 문자열 시작 부분과 끝 부분의 문자 만 제거하므로 코드가 제대로 작동하지 않습니다. 대신 Replace를 사용해야합니다

line.Replace(@"\", string.Empty); 
4

시도를 (새 문자 [] { '\\'})`처음부터 모든 \ 문자를 제거하거나

string result = line.Replace("\\",""); 
2
  while ((line = stringReader.ReadLine()) != null) 
     { 
      // split the lines 
      for (int c = 0; c < line.Length; c++) 
      { 
       line = line.Replace("\\", ""); 
       lineBreakOne = line.Substring(1, c - 2); 
       lineBreakTwo = line.Substring(c + 2, line.Length - 2); 
      } 
     }