如何判断拆分了哪个分隔符字符串

时间:2013-07-02 15:57:23

标签: c# regex linq split

我正在尝试从PDF中提取的文本中解析订单项。提取的文本格式不正确,每页一个长字符串。没有任何有用的分隔符,但行以两个字符串中的一个开头。我使用带有这两个字符串的字符串数组设置了Split(),但是我需要知道元素被拆分的分隔符。

我发现了this link,但我在RegEx上并不是那么出色。有人可以协助编写RegEx字符串吗?

    var lineItems = page.PageText.Split(new string[] { "First String Delimiter", "Second String Delimiter" }, StringSplitOptions.None);

我需要知道的是元素[x]是否是“First String Delimiter”或“Second String Delimiter”的结果。

编辑:我不在乎Regex是否是解决方案。 Linq可能同样适合。直到我获得学位之后,Linq才出来,所以我同样不熟悉它。

想象一下这个端到端的大约15-20个页面作为一个没有回车的长字符串返回:由于它们都以“公司贸易支付信用”或“预授权的ACH信用”开头,我可以分开这些,但我需要知道它是什么类型。

  

预先授权的ACH信用(165)10,000.00 489546541 0000000000文本关于交易的一些长描述 - 预授权ACH信用(165)5,310.99 8465498461 0000000000文本另一个长描述公司贸易支付信用(165)4,933.17 8478632458775 0000000000文本另一个机密字符串描述。

2 个答案:

答案 0 :(得分:1)

为什么不运行拆分两次,一次使用第一个分隔符,然后再使用第二个分隔符?

var firstDelimiterItems = page.PageText.Split("First String Delimiter");

var secondDelimiterItems = page.PageText.Split("Second String Delimiter");

答案 1 :(得分:1)

有时最简单的解决方案是最好的解决方案。不知道为什么早些时候我没有这样做。

    var pageText = page.PageText.Replace("Corporate Trade Payment", "\r\nCorporate Trade Payment").Replace("Preauthorized ACH Credit", "\r\nPreauthorized ACH Credit");

这为我提供了各行的订单项。不需要正则表达式。谢谢大家的帮助,如果你找到了解决Regex原始问题的方法,请发帖。我总是在学习更多。