2017-09-13 222 views
0

當試圖在C#中將string轉換爲int時,出現上述錯誤消息。我意識到這個問題已經討論過很多次了,但是沒有一個提出的解決方案爲我工作。我通過使用StreamReader來讀取.csv文件中的字符串。多一個「輸入字符串格式不正確」c#

Printing it using Debug.Log("str") returns "17".

然而,所有下面的嘗試導致同樣的錯誤:

 //int value = int.Parse(str); 
     //int value = Int32.Parse(str); 
     //int value = Convert.ToInt32(str.Replace(" ", "")); 
     //Int32 value = Int32.Parse(str); 
     //int value = int.Parse(str.Trim()); 
     //int value = int.Parse(str.ToString().Trim()); 
     //int value = int.Parse(str.ToString().Replace(" ", "").Trim()); 
     //int value = int.Parse(str.Replace(" ", "")); 
     //int value = Convert.ToInt32(str); 
     //int value = Convert.ToInt32(str.ToString().Replace(" ", "").Trim()); 
     //decimal value = decimal.Parse(str); 
     //decimal value = Convert.ToDecimal(str); 
     //float value = float.Parse(str); 

Using Int32.TryParse(str, out value); returns 0 and does not help.

我失去的東西在這裏很明顯?

+6

代碼錯誤的實幹家\u2063你應該包括實際*輸入*不僅僅是你得到的結果。什麼*是*'str'。 – HimBromBeere

+0

https://stackoverflow.com/help/mcve –

+0

如果您正在閱讀csv,則必須使用str.Split分隔行(new char [] {'。'})。ToArray(); – jdweng

回答

0

並非所有的符號可見,如:

http://www.fileformat.info/info/unicode/char/200B/index.htm

http://www.fileformat.info/info/unicode/char/2063/index.htm

那有這樣怪異的錯誤(int.TryParse(str, out val) == falseConsole.Write(str);回報17)我建議傾銷實際的時候爲什麼是字符串:

string str = "1\u20637"; // 17 with invisible separator between 1 and 7 

    // dump: hex representation followed by string representation 
    string dump = $"{string.Join(" ", str.Select(c => ((int)c).ToString("x4")))} '{str}'"; 

    Console.Write(dump); // or Debug.Log or what ever 

是具有內置的轉儲時(請注意無辜的字符串表示 - '17'

0031 2063 0037 '1⁣7' 

您可以輕鬆地檢測出上述