拆分字符串和数字并存储在键值对上

时间:2017-12-04 03:33:09

标签: c# split key-value

我正在尝试废弃一堆类似的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.]

1 个答案:

答案 0 :(得分:0)

试试这个,

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是文本的一部分而不是键。只要有整数,此代码就会将其视为字典的键。