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

标签 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.]

最佳答案

试试这个,

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/

相关文章:

mysql 拆分字段值并检查条件

java - 将纯文本解析为某些结构化对象

redis - G-WAN 和 C 中的键值存储

c# - 在静态上下文中调用 C# 扩展方法是否有效?

c# - 在 .NET 中使用 Go CD

java - 如何在java中向后分割字符串

正则表达式——忽略到给定点的行

c# - Serilog 没有写入 MsSql 服务器数据库,也没有显示任何错误

c# - 隐藏工具栏绑定(bind)错误

python - 我想在字符串第一次出现时将其拆分为属于字符列表的字符。如何在 python 中做到这一点?