2010-12-15 42 views
7

从平面文件导入数据时,我注意到一些行嵌入了非空格(Hex:A0)。从基于十六进制值的字符串中删除特定字符

我想删除这些,但标准的string.replace似乎并没有工作,并已考虑使用正则表达式来替换字符串,但不知道正则表达式将搜索将其删除。

而不是将整个字符串转换为十六进制并检查,有没有更好的方法?

+2

替换应该处理,你能显示代码(失败)? – 2010-12-15 21:44:40

回答

19

为什么不能string.Replace工作?

stringVar.Replace((char)0xA0, ' '); 
+0

以上更改为空白,对不对?你如何彻底删除它?我尝试过“”和“',但显然如果你在替换的左边有一个字符,你必须在右侧有一个字符。 – NealWalters 2012-05-18 16:58:55

+0

@NealWaters:你需要使用'null'作为第二个参数的'Replace'的字符串版本。 – 2012-05-28 09:44:04

12
Regex.Replace(input, "\xA0", String.Empty); 

这应该做到这一点。

3

这会为你工作吗?

var myNewString = myCurrentString.Replace("\n", string.Empty); 
myNewString = myNewString.Replace("\r", string.Empty); 

\n” 是ASCII换行符, “\r” 的回归。

+1

这些都不是非破坏性的空格字符A0(160)。 – KeithS 2010-12-15 21:54:16

+0

是的,你是对的,我误解了这个问题。抱歉。我应该删除我的答案还是把它留在这里(我是新来的...)? – 2010-12-15 21:55:59

+0

你应该改正你的答案。这是最好的事情。 – jlafay 2010-12-15 22:03:37

5

string.Replace does not work。不使用正则表达式:

stringVar = stringVar.Replace("\xA0", string.Empty);