繁体   English   中英

如何用string.Empty替换字符串中的隐藏(奇怪)字符

[英]How Replace Hidden (Strange) Characters From A String With string.Empty

请查看以下代码:

Health = HttpUtility.HtmlDecode(Health).Replace("%", string.Empty).Replace("\"", string.Empty).Replace("‭‎",string.Empty).Trim();
File.WriteAllText(@"d:\a.txt", Health);
char[] ar = Health.ToCharArray();
File.WriteAllText(@"d:\a.txt", string.Empty);
foreach (char a in ar)
{
    File.AppendAllText(@"d:\a.txt", a.ToString() + Environment.NewLine);
}

int a = int.Parse(Health); //-> I Always Have Error In This Line

d:\\a.txt的输出类似于:



1
0
0



该文件中有6个隐藏的奇怪字符, ar数组的长度为9
这些隐藏的字符是什么,我该如何删除它们?
为什么Trim()无法删除那些隐藏的字符?

删除所有不可打印的内容:

var str = "kljdfssdflksdfkl\x03kdkddk\x04lkdldök";
var onlyPrintableChars = str.Where(ch => !char.IsControl(ch)).ToArray();
var resultStr = new string(onlyPrintableChars);

即使删除了不可打印的字符,如果字符串中包含非数字字符,您的int.Parse也可能会引发异常。 您可能要使用int.TryParse

int a;
if (!int.TryParse(Health, out a))
{
    // error: non-numeric
}

从外观上看,您正在尝试删除所有不是数字的东西(否则您将不会对结果进行int.Parse )。 如果那是您想要做的,那么您可以编写:

Health = Regex.Replace(Health, "[^0-9]", "");

但是,这可能不是一个好主意,因为它将把"12foobar34"变成"1234"

您可能应该弄清楚那些坏字符是什么以及它们如何进入您的数据。 然后尽快从输入中删除它们。 或者,更好的是,首先阻止他们到达那里。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM