2012-09-12 25 views
6

Tôi có một chức năng đọc một tập tin được phân tách.string.Split function trong C# tab delimiter

Dấu phân tách được chuyển đến hàm bằng đối số chuỗi. Vấn đề là, khi tôi vượt qua dấu phân tách "\t", nó kết thúc giống như "\\t" và do đó, Split không thể tìm thấy chuỗi này.

Tôi làm cách nào để giải quyết vấn đề này?

private void ReadFromFile(string filename, string delimiter) 
{ 

     StreamReader sr = new StreamReader(filename, Encoding.Default); 
     string[] firstLine = sr.ReadLine().Split(t.ToCharArray()); 

     ....... 
} 
+3

vui lòng hiển thị một số mã! – Yahia

Trả lời

21

Tôi đoán bạn đang sử dụng một cái gì đó giống như

string sep = @"\t"; 

trong trường hợp này tháng chín sẽ tổ chức \\t đôi lại giảm

sử dụng string sep = "\t"

string content = "Hello\tWorld"; 
string sep = "\t"; 
string[] splitContent = content.Split(sep.ToCharArray()); 
1

sử dụng các qutes đơn cho điều này như Split ('\ t'), bằng cách này bạn sẽ chuyển char và không phải chuỗi.

-3

bạn đã thử: Environment.NewLine?

+0

Tôi nghĩ bạn có thể đã vô tình đăng câu trả lời này ở đây thay vì một câu hỏi khác, bởi vì nó dường như không liên quan gì đến câu hỏi đang được hỏi. – shieldgenerator7

0

Nếu bạn vượt qua trong "\ t" như dấu phân tách sẽ không thay đổi thành "\ t". Một cái gì đó khác là tăng gấp đôi thoát tab của bạn.

Blah("\t"); 
    private static void Blah(string s) 
    { 
     var chars = s.ToCharArray(); 
     Debug.Assert(chars.Length == 1); 

     var parts = "blah\tblah\thello".Split(chars);    
     Debug.Assert(parts.Length == 3); 
    } 
0

Một cách khác để làm phân chia của bạn được thay thế TAB (\ t) bởi một không gian trống trên theo cách này:

  if(linea.ToLower().Contains(@"\t")) 
       linea = linea.Replace(@"\t", " "); 
      retVal = linea.Trim().Split(' ')[1]; 

Mã này làm việc cho tôi.

1

giá trị tham số truyền dưới dạng số thập phân \ t (tab) và chuyển đổi thành nó Char.

int delimeter =9; 

// 9 ==> \t 
// 10 ==> \n 
// 13 ==> \r 

char _delimeter = Convert.ToChar(delimeter); 

string[] rowData = fileContent.Split(_delimeter); 

Lập trình hạnh phúc.

Các vấn đề liên quan