2013-07-02 149 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

這就是我被迫做的事情,但我希望如果可能,從一開始就讓每個訂單項都放在自己的元素中。 –