private void FilterNumbers(List<string> numbers)
{
for (int i = 0; i < numbers.Count; i++)
{
if (numbers[i].Contains
}
}
例如,在索引0中,我看到:“ 6”在索引7中,我看到:“ 88”
我要从列表中删除此索引。该列表是仅包含数字的文本和数字混合索引!我想删除那些。
我的代码不完整。如何检查索引是否仅包含数字?
编辑**
这就是我所做的:
首先,我创建原始列表:
private void ExtractText(string filePath)
{
List<string> text = new List<string>();
var htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.OptionFixNestedTags = true;
htmlDoc.Load(filePath, System.Text.Encoding.GetEncoding(65001));
if (htmlDoc.DocumentNode != null)
{
var nodes = htmlDoc.DocumentNode.SelectNodes("//a/b");
foreach (var node in nodes)
{
text.Add(node.InnerText);
}
}
}
该文件是:
client.Encoding = System.Text.Encoding.GetEncoding(1255);
page = client.DownloadString("http://rotter.net/scoopscache.html");
StreamWriter w = new StreamWriter(@"d:\rotterhtml\rotterscoops.html");
w.Write(page);
w.Close();
ExtractText(@"d:\rotterhtml\rotterscoops.html");
问题在于,最后,在ExtractText方法中,作为List的变量文本在前6个索引和后6个索引数字中包含。“ 0”“ 6”“ 8”
我想做的是在两个标签之间的每个文本中提取文本:
现在我想过滤数字,但是它在开头和结尾仅过滤3个索引。
编辑*
这是我调用filter方法的地方:
private void ExtractText(string filePath)
{
List<string> text = new List<string>();
var htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.OptionFixNestedTags = true;
htmlDoc.Load(filePath, System.Text.Encoding.GetEncoding(65001));
if (htmlDoc.DocumentNode != null)
{
var nodes = htmlDoc.DocumentNode.SelectNodes("//a/b");
foreach (var node in nodes)
{
text.Add(node.InnerText);
}
FilterNumbers(text);
}
}
一种可能是使用int.TryParse方法,该方法检查是否可以将给定的字符串解析(转换为)整数:
private List<string> filterNumbers(List<string> mix)
{
List<string> onlyStrings = new List<string>();
foreach (var itemToCheck in mix)
{
int number = 0;
if (!int.TryParse(itemToCheck, out number))
{
onlyStrings.Add(itemToCheck);
}
}
return onlyStrings;
}
然后,您可以使用如下功能:
var mix = new List<string> { "1", "a", "66", "b" };
var strings = filterNumbers(mix);
foreach (var s in strings)
{
Console.WriteLine(s);
}
输出为:
a
b
更新:
如果将列表中的迭代与删除分开,则SonerGönül的解决方案也将正常工作。这可以使用ToList
LINQ扩展方法来实现:
private void FilterNumbers(List<string> numbers)
{
// create a copy of the list,
// so that removal does not affect the iteration
foreach (var item in numbers.ToList())
{
if(item.All(Char.IsDigit))
{
numbers.Remove(item);
}
}
}
然后根据需要使用:
var mix = new List<string> { "1", "5", "bbb", "6", "ABC" };
FilterNumbers(mix);
foreach (var item in mix)
{
Console.WriteLine(item);
}
和预期的输出:
bbb
ABC
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句