2011-12-05 40 views
23

Tôi có đoạn code sauRemove '' char từ chuỗi 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); 
     } 
    } 
} 

Tôi đã thêm một mạng lưới comment vào dòng Tôi đang tự hỏi về. Tôi muốn xóa tất cả các ký tự '\' khỏi chuỗi. Đây có phải là cách chính xác để làm điều này không? Tôi không làm việc. Tất cả \ vẫn còn trong chuỗi.

+0

'Trim (new char [] { '\\'}) 'sẽ loại bỏ tất cả \ nhân vật ngay từ đầu hoặc kết thúc. Nó 'trims' chúng ra. Do trạng thái @ user978511, bạn có thể sử dụng 'Thay thế (" \\ "," ")'. (FYI, việc sử dụng ký tự @ nghĩa là "lấy chuỗi này theo nghĩa đen, không áp dụng quy tắc thoát") – JohnL

+0

Không có giải pháp nào dưới đây hoạt động cho tôi ... – rsy

+0

Regex.Unescape() – Alexander

Trả lời

75

Bạn có thể sử dụng:

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

hoặc

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

Đó là vì Thay thế không thay đổi chính chuỗi đó , nó trả về chuỗi đã thay đổi. Vì vậy, bạn phải làm như câu trả lời của tôi, và viết 'line = line.Rep ...' –

+1

Đây không phải là dấu gạch chéo. Đây là những nhân vật trốn thoát. Chúng được sử dụng ở đây để thoát khỏi dấu ngoặc kép. Xem xét sử dụng trích dẫn đơn thay vì dấu ngoặc kép. Bạn sẽ không cần slashes ở đó. –

+1

@PoiXen - Trong chuỗi bạn đã đăng, '\" 'là một chuỗi thoát cho phép' "' xuất hiện trong chuỗi. Không có ký tự gạch chéo nào trong đó. – Oded

4

Tại sao không đơn giản này?

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

Tôi nghĩ rằng cần phải là "\\" hoặc @ " \ "phải không? –

+1

@BaliC Thực tế là không. Với một ** "\" ** bạn nhận được phân tích cú pháp "\" - Bất hợp pháp \ ở cuối mẫu. .NET 3.5 – FailedDev

4

Hãy thử sử dụng

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

để loại bỏ tất cả '\' từ một chuỗi, bạn chỉ cần làm như sau:

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

Bạn có thể sử dụng String.Replace mà về cơ bản loại bỏ tất cả các lần xuất hiện

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

Trim chỉ xóa các ký tự ở đầu và cuối chuỗi, đó là lý do mã của bạn không hoạt động. Bạn nên sử dụng Replace thay vì:

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

Cố gắng thay thế

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); 
      } 
     }