2016-12-07 6 views
0

私はC#を初めて使用していて、ファイルから読み込んだデータをフィルタリングする方法を工夫しています。私はこれらのデータを読み取るときC#を使用して文字列内の隠し文字をフィルタリングする方法

3 286 858 95.333 0.406 0.427 87.00 348 366 4 b 
9 23 207 2.556 0.300 1.00 1.51 62 207 41 a 
9 37 333 4.111 0.390 0.811 2.03 130 270 64 a 
10 21 210 2.100 0.348 0.757 3.17 73 159 23 a 
9 79 711 8.778 0.343 0.899 2.20 244 639 111 a 
10 66 660 6.600 0.324 0.780 2.25 214 515 95 a 

は、そのうちのいくつかは、それらの中に隠されCarriage returnまたはLine Feed文字を持っている:私はfollwoingにデータsimilerを持っているから、私は読んでファイルを持っています。それらを取り除く方法があるかどうか教えてください。例えば、私の変数の一つが原因それらで改行文字に次の値を保持することがあります。

私はあなたが取得したい場合は、このmystringval変数はバック

mystringval = "9" 
+0

mystringval = mystringval.replace( "/ r/n"、 "")を使用すると、キャリッジリターン改行を空のcharに置き換えます。 – user1336827

+0

これを参照してください:http://stackoverflow.com/questions/9134550/search-for-a-newline-character-c-net – Ryan

+1

'Environment.NewLine'を使用してください。ところで、@ user1336827 "/ r/n"は間違っています! – t0mm13b

答えて

1

に変換したいですすべての特殊文字を取り除くと、正規表現を学び、Regex.Replaceを使うことができます。

var value = "&*^)#abcd."; 
var filtered = System.Text.RegularExpressions.Regex.Replace(value, @"[^\w]", ""); 

REGEXPLANATION

    文字列の前 @はあなたが唯一の正規表現のエスケープシーケンス
  • [^abc]試合を残して、エスケープシーケンスが動作しないリテラル文字列とC#を使用していることを意味し
  • a、b、またはc以外のすべての文字(空白で置き換える)
  • \wは、文字、数字、または数字を意味する特別な正規表現コードです。またはアンダースコア
  • また、@"[^A-Za-z0-9\.]"を使用して、文字、数字、および小数をフィルタリングすることもできます。詳細については、http://rubular.com/を参照してください。
+0

私が私の答えを書いたときに思ったことの一つは、 "123 \ r \ n987"。それは1つの正規表現で '123 987 ''に変換する方法か、2つにする必要がありますか? –

+0

@WaiHaLee \ r \ nもスペースで置き換えることを意味しますか? 2つの正規表現が必要です。それを置き換えてください。 –

+0

十分に良い。私はそれを行う単一の、複雑なRegExペアがあるかどうかはわかりませんでした。 –

0

としてだけでなく、正規表現を使用して、あなたは最初の2つのReplace呼び出しは開始時に1行と番号の末尾に番号を持つ防ぐます

var goodCharacters = input 
    .Replace("\r", " ") 
    .Replace("\n", " ") 
    .Where(c => char.IsLetterOrDigit(c) || c == ' ' || c == '.') 
    .ToArray(); 
var result = new string(goodCharacters).Trim(); 

ような何かをするためにLINQを使用することができます次のもの、例えば"123\r\n987""123987"となりますが、私はあなたが"123 987"を望むと仮定しています。

私のサンプルhere on ideone.comを試してみてください。

関連する問題