2013-07-02 107 views
1

我试图解析出从PDF中提取的文本中的行项目。提取的文本格式很差,每页只有一个长字符串。没有任何有用的分隔符,但行以两个字符串中的一个开头。我已经使用这两个字符串的字符串数组设置了Split(),但我需要知道哪些分隔符被分割。如何判断哪个分隔符字符串被拆分

我发现this link,但我没有那么大的正则表达式。有人可以协助编写RegEx字符串吗?

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

我需要的是知道的是,如果元素[X]是“第一个字符串分隔符”或“第二个字符串分隔符”的结果。

编辑:我不在乎,如果正则表达式是解决方案。 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文字的另一种机密字符串描述。

+1

请举一些例子。 –

回答

1

有时最简单的解决方案是最好的解决方案。不知道为什么这在我以前没有发生过。

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

这给了我自己行上的订单项。不需要Regex。谢谢大家的帮助,如果你找到了正则表达式的方法,请发表。我一直都在学习更多。

+0

你应该接受你自己的答案... – EFrank

1

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

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

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

这就是我被迫做的事情,但我希望如果可能,从一开始就让每个订单项都放在自己的元素中。 –