手头上有个某字段只支持ASCII编码的系统,为它提供导入数据需要过滤掉相关的中文空格,不然就会以乱码的形式显示。在网上搜索了相关的资料,调试并无直接能用的案例。
稍微分析下,中文空格转换成ASCII字符数组表示为63,那么只要过滤掉63的字符即可。
for(int i = ansi.Length - 1; i > -1; i--)
{
char c = ansi[i];
if (c == 63)
{
var tmp = ansi.ToList();
tmp.Remove(c);
ansi = tmp.ToArray();
}
}
string ansi_dtmp = new string(ansi);
正面解决了问题,之后我们来考虑下偷懒的方法。
用正则匹配ASCII空格,然后将其替换成别的字符,再清空剩下不能匹配的空格,最后再置换回来亦可。
direction = Regex.Replace(direction, "\u0020", "\x05");
direction = Regex.Replace(direction, @"\s", string.Empty);
direction = Regex.Replace(direction, "\x05", "\u0020");