2012-12-13 54 views
0

我有一個關於拆分字符串的問題,並將其放入DataTable中。我怎麼知道第二個數組是字符串還是數字?拆分字符串並放入DataTable,找到第二個索引號

我有這樣許多字符串文本:

text : ... 
     abc 123 def 1 \"ok lo\" ; 
     abc def 1 \"ok lo\" ; 
     ... 

數組2:

tmpList[0] = abc 
tmpList[1] = 123 
tmpList[2] = def 
tmpList[3] = 1 \"ok lo\" 

陣列1:

tmpList[0] = abc 
tmpList[1] = def 
tmpList[2] = 1 \"ok lo\ 

要查找所有字符串startwith ABC我所做的:

 StreamReader fin = new StreamReader(userSelectedFilePath1); 
     string tmp = ""; 
     while ((tmp = fin.ReadLine()) != null) 
     { 
     if (tmp.StartsWith("abc ")) 
      { 
       var tmpList1 = tmp.Split(new[] { '"' }).SelectMany((s, i) => 
       { 
        if (i % 2 == 1) return new[] { s }; 
        return s.Split(new[] { ' ', ';', ',' }, StringSplitOptions.RemoveEmptyEntries); 
       }).ToList(); 

       table.Rows.Add(new object[] { tmpList1[0], tmpList1[1], tmpList1[2], tmpList1[3]}); 

      } 

     } 

有了這段代碼,我可以找到字符串開頭的abc,拆分並放入DataTable中。我怎麼知道第二個索引是字符串還是int?與我所做的一樣,我對第二個索引有一個錯誤,並且它不正確地分裂。我想if(tmp.StartsWith(abc NUMBER?))else做上述

+0

如果你的問題是關於「你試圖達到的目標」的話,任何人都可以更容易地回答。什麼是你的表模式,爲什麼第二個數組需要是一個整數? –

回答

0

代碼當你String.Split(),所有的數組中的值將是字符串一樣,所以在你的榜樣爲ABC:

tmpList[1] = 123 // this is incorrect as the value is an int 

這應該是:

tmpList[1] = "123" // value is a string 

然後,你可以做的是儘量值轉換爲int,如果失敗,你知道這是不是一個int:

int number; 
bool result = Int32.TryParse(tmpList[1], out number); 
if (result) { 
    // your code for if the value is a number   
} 
else { 
    // your code for if the value is not a number 
} 

here複製的代碼示例。

相關問題