2016-04-30 160 views
1

我遇到了一個我不明白的問題。我正在讀取文件中的數據,並遇到來自文件條目的string.Replace(" ", "<whatever>")不會取代單個空白的情況。我不禁感到有一些非常基本的東西我錯過了,因爲相同類型的字符串聲明爲文字很好。不能用字符串替換單個空格。替換()

從文件的典型線(各條目由製表符分隔):

「2016-FEB-08 9時54分00秒」, 「2016-FEB-08 17時28分00秒」,「短「227」「5 170,00」「+ 3,90%」「0,00」

使用File.ReadAllLines().Split(new[] {"\t" }, StringSplitOptions.None);將文件中的數據讀入數組中。

那麼我想清理作進一步處理中的第五項,這是當我遇到這個問題: entries[4].Replace(" ", string.Empty).Replace("\"", string.Empty);給出「5 170,00」 Regex.Replace(entries[4], @"\s+", string.Empty).Replace("\"", string.Empty);給「5170,00」,這是結果我正在尋找。

運行第一個Replace()與一個單一的空間的文字工作正常,所以我很好奇,如果從文件的字符串內的空白不知何故?而正則表達式解決方案的工作,我真的想知道我的「問題」是什麼。

+1

你能在這裏發佈以下命令的結果:'串x =的string.join(的String.Empty,Encoding.UTF8.GetBytes(條目[4])選擇(B => b.ToString( 「X2」)))'? –

+0

@UlugbekUmirov該命令的結果是「2235c2a03137302c303022」。 – user1323245

+0

也許你應該清理並重建你的解決方案。 –

回答

1

您可以使用下面的代碼來檢查字符的十六進制值。一個正常的空間是0x20,其值顯示在您發佈的代碼中的五個和一個之間。

  string input = "2016-feb-08 09:54:00 2016-feb-08 17:28:00 Short 227 5 170,00 +3,90% 0,00"; 
      byte[] output = Encoding.UTF8.GetBytes(input); 
+0

fitth條目的字節顯示「5」和「1」之間有兩個字符; 「Â」和「''」。我想我需要回答的問題變成了,那些人是如何進入而不是單個空白的。謝謝。 – user1323245