我是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
个字符。你能否告诉我是否有办法将它们删除。例如,由于其中包含换行符,我的变量之一可能会保留以下值:
mystringval = "9
"
我希望将此mystringval
变量转换回
mystringval = "9"
答案 0 :(得分:1)
如果你想摆脱所有特殊字符,你可以学习正则表达式并使用Regex.Replace。
var value = "&*^)#abcd.";
var filtered = System.Text.RegularExpressions.Regex.Replace(value, @"[^\w]", "");
<强> REGEXPLANATION 强>
@
意味着您正在使用文字字符串而c#转义序列不起作用,只留下正则表达式转义序列[^abc]
匹配所有不是a,b或c的字符(用空格替换它们)\w
是一个特殊的正则表达式代码,表示字母,数字或下划线@"[^A-Za-z0-9\.]"
来过滤字母,数字和小数。有关详细信息,请参阅http://rubular.com/。答案 1 :(得分:0)
除了使用RegEx之外,您还可以使用LINQ执行类似
的操作var goodCharacters = input
.Replace("\r", " ")
.Replace("\n", " ")
.Where(c => char.IsLetterOrDigit(c) || c == ' ' || c == '.')
.ToArray();
var result = new string(goodCharacters).Trim();
前两个Replace
来电将防止在一行结尾处有一个数字,在下一行的开头有一个数字,例如"123\r\n987"
原则为"123987"
,而我认为您需要"123 987"
。
试试我的样本here on ideone.com。