我正试图废弃一堆类似的 HTML 页面,而这些标签是恕我直言的噩梦。 我发现使用,
IList<IWebElement> all = driver.FindElements(By.TagName("p"));
带来了很好的效果。这是我可以使用它的不同字符串:
1 txt 2 txt txt txt, 3 txt txt.
4 txt
5 txt 6 txt
7 txt
"txt
txt
txt"
8 txt.
我基本上想将数字和文本分开以保持它们之间的关系。 本质上,每一行都是一个不同的字符串(这是一个不同的 p 元素),包括空字符串。 我能想到的最好方法是生成一个键值对,但我无法提取数字和文本并保留它们的关系。 我正在尝试使用 Split 方法来做到这一点
Regex.Split(input, pattern);
我认为在这些字符串上效果不佳。有什么想法吗?期望的结果将是如下列表:
1: [1, txt]
2: [2, txt txt txt,]
3: [3, txt.]
4: [4, txt]
5: [5, txt]
6: [6, txt]
7: [7, txt "txt txt txt"]
8: [8, txt.]
最佳答案
试试这个,
Dictionary<int, string> dict = new Dictionary<int, string>();
int key = -100; string value = "";
foreach(IWebElement element in all)
{
foreach (var str in element.Text.Split(' '))
{
int new_key;
if (int.TryParse(str.Trim(), out new_key))
{
if (value == "")
key = new_key;
else
{
dict[key] = value.Trim();
value = "";
key = new_key;
}
}
else
{
value += str + " ";
}
}
dict[key] = value.Trim();
}
我的代码确实假设文本中没有整数词,例如“1 txt txt txt 3 txt”,其中 3 是文本的一部分而不是键。只要有一个整数,这段代码就会假定它是字典的键。
关于c# - 拆分字符串和数字并存储在键值对上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47626122/