2016-04-30 16 views
1

私は理解できない問題に遭遇しました。私はファイルからデータを読み込み、ファイルからのエントリのstring.Replace(" ", "<whatever>")が単一の空白の出現を置き換えない状況に遭遇しました。文字通り同じような文字列が文字通りうまく動作すると宣言しているので、私が見逃してしまった、非常に基本的なものがあると感じるのを助けることはできません。単一空白をstring.Replace()に置き換えることはできません。

典型的なファイル(各エントリはタブによって分離される)からのライン:

「2016 02月08午前9時54分00秒」、「2016 02月08 17時28分00秒」「短「227」「5 170,00」「+3,90%」「0,00」

ファイルからのデータは、File.ReadAllLines().Split(new[] {"\t" }, StringSplitOptions.None);を使用して配列に読み込まれます。

私は、さらなる処理のために5番目のエントリをクリーンアップしたい、と私は問題に遭遇したときに、これは次のとおりです。 entries[4].Replace(" ", string.Empty).Replace("\"", string.Empty);は「5 170,00」 Regex.Replace(entries[4], @"\s+", string.Empty).Replace("\"", string.Empty);は結果Iである、「5170,00」を与えるいます探しています。

最初のReplace()を1つの空白でリテラルに実行すると問題はないので、ファイルの文字列内の空白がどういう形になっているのか不思議です。 Regexのソリューションが動作する間、私は本当に私の "問題"が何であるかを知りたいです。

+1

あなたはここに次のコマンドの結果投稿できます: '文字列のx = string.Join(String.Emptyを、Encoding.UTF8.GetBytes(エントリー[4])(=> b.ToString B(選択"x2"))) '? –

+0

@UlugbekUmirovコマンドの結果は "2235c2a03137302c303022"です。 – user1323245

+0

おそらく、ソリューションをきれいにして再構築する必要があります。 –

答えて

1

文字の16進値を確認するために、次のコードを使用できます。通常のスペースは、あなたが投稿したコードの5と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"の間に2つの文字があることを示します。 "Â"と "" '"。私は答えが必要な質問が出てくると思います。ただ一つの空白の代わりに、どうやってそこに入りましたか?ありがとう。 – user1323245

関連する問題