根据十六进制值从字符串中删除特定字符

10
在从平面文件导入数据时,我注意到一些行内有嵌入的不间断空格(十六进制:A0)。
我想删除它们,但标准的string.replace似乎不起作用,考虑使用正则表达式替换字符串,但不知道正则表达式应该搜索什么来删除它。
有没有更好的方法,而不是将整个字符串转换为十六进制并进行检查?

2
替换应该可以处理这个问题,你能展示一下(失败的)代码吗? - H H
4个回答

25

为什么 string.Replace 不起作用?

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

上述更改变为空白,对吧?你怎样才能完全删除它呢?我尝试了""和'',但显然如果在替换的左侧有一个字符,则右侧也必须有一个字符。 - NealWalters
@NealWaters:你需要使用字符串版本的 Replace 函数,并将 null 作为第二个参数。 - Jackson Pope

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

这应该就可以了。


7

string.Replace可以使用,不需要使用正则表达式:

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

3
这对你有用吗?
var myNewString = myCurrentString.Replace("\n", string.Empty );
myNewString = myNewString.Replace("\r", string.Empty );

"\n" 是 ASCII 换行符,"\r" 是回车符。

1
这两个字符都不是非断空格字符A0(160)。 - KeithS
是的,你说得对,我误解了问题。抱歉。我应该删除我的回答还是只是留在这里(我是新手...)? - Uwe Keim
答案完全错误,这里没有任何需要更正的地方 :-) 其他人回答得很正确。 - Uwe Keim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接