2011-10-02 27 views
1

所以我有一個文本文件,如下面的解析.txt文件爲不同的數據類型

-9 
5.23 
b 
99 
Magic 
1.333 
aa 

當我嘗試使用下面的代碼,對GetType()函數把它作爲讀取它讀取字符串:

string stringData; 

streamReader = new StreamReader(potato.txt); 
while (streamReader.Peek() > 0) 
{ 
    data = streamReader.ReadLine(); 
    Console.WriteLine("{0,8} {1,15}", stringData, stringData.GetType()); 
} 

那麼,這就是輸出:

-9  System.String 
5.23 System.String 
b  System.String 
99  System.String 
Magic System.String 
1.333 System.String 
aa  System.String 

我明白,我問StreamReader類全部以字符串形式閱讀。

我的問題是,一個人如何把它讀作不同的不同的數據類型(如字符串,整數,雙),並將其輸出爲:

-9  System.int 
5.23 System.double 
b  System.String 
99  System.int 
Magic System.String 
1.333 System.double 
aa  System.String 

回答

6

你必須字符串轉換爲類型:

string stringData; 
double d; 
int i; 

streamReader = new StreamReader(potato.txt); 
while (streamReader.Peek() > 0) 
{ 
    data = streamReader.ReadLine(); 

    if (int.TryParse(data, out i) 
    {  
     Console.WriteLine("{0,8} {1,15}", i, i.GetType()); 
    } 
    else if (double.TryParse(data, out d) 
    {  
     Console.WriteLine("{0,8} {1,15}", d, d.GetType()); 
    } 
    else Console.WriteLine("{0,8} {1,15}", data, data.GetType()); 
} 
+0

非常感謝。順便說一句,你爲什麼用「out」?爲什麼必須通過參考來傳遞? – iggy2012

+0

我沒有選擇,tryparse方法有這個參數結構。如果你想要返回兩個值的方法是一個不錯的選擇。 – Blau

1

通常你會知道類型(文件的結構)。

如果不是,請使用RegEx檢查可能的intdouble值,其餘爲string