[英]C# - Removing white space between characters using the usual techniques don't work
我有一个问题似乎是一个真正的坚果。 我正在使用HTMLAgilityPack来读取HTML页面并使用XPath来选择我需要的几个元素。 这很好用。
使用XPATH,我也试图选择这个DIV的数字(441676)。
<div class="info">
Money:
441 676,-<br>
</div>
我设法选择数字,并使用这种奇妙的方法修剪它: 最快的方法来删除字符串中的空白
但无论我做什么,441和676之间的空白区域都不会消失。 修剪其他地方的白色空间效果很好。 它只是在它不起作用的数字之间。 谁知道我在这里缺少什么?
在我看来,你正在处理一个不间断的空间。 使用您链接的方法,我有两个建议。
第一种是更新你的toExclude
数组以包含以下字符:
var str = s.ExceptChars(new[] { ' ', '\\t', '\\n', '\\r',
'\ '
});
注意:您应该将数组移动到静态全局变量,因为它永远不会更改,并且您不希望每次调用此函数时都重新分配它。
另一种方法是更新您的ExceptChars
函数以使用Char.IsWhiteSpace函数,如下所示:
public static string ExceptChars(this string str, IEnumerable<char> toExclude)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.Length; i++)
{
char c = str[i];
if (!Char.IsWhiteSpace(c))
sb.Append(c);
}
return sb.ToString();
}
好吧,我这样解决了。 使用ExceptChars方法以最快的方式删除字符串中的空格我将其修改为“AllowChars”方法,该方法仅保留给定的字符。 像这样:
public static string AllowedChars(string str, IEnumerable<char> toInclude)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.Length; i++)
{
char c = str[i];
if (toInclude.Contains(c))
sb.Append(c);
}
return sb.ToString();
}
使用这样的方法然后:
string money_fixed = AllowedChars(money, new HashSet<char>(new[] {'1','2', '3', '4', '5', '6', '7', '8', '9', '0' }));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.