[英]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.