2012-03-28 69 views
0

在郵件系統上,當郵件發送一定數量的字符後(愚蠢的方式來執行操作,但不幸的是不允許更改)時,會自動添加換行符。這意味着,中斷已被自動插入的網址,讓久的人都分頭行動,如:如何從URL中選擇性刪除換行符

http://www.stackoverflow.com/some-more-<br/>stuff

當檢索信息,功能轉換鏈接到標籤,在這個網址的結果:

<a href='http//www.stackoverflow.com/some-more-'>http://www.stackoverflow.com/some-more-</a>stuff 

我需要刪除<br/>它變成一個鏈接之前。

我已經將消息拆分爲空間中的單詞,然後遍歷每個單詞,看它是否包含'http://'或'www。'。然後用空字符串替換<br/>(如果有)。

然而,網址,這隻能在一個段落輸入,例如:

網址爲http://www.stackoverflow.com

它不針對URL工作換行進入周圍,爲例如:

這裏的網址:

http://www.stackoverflow.com

這裏還有一些文字

..是切碎成:

這裏的網址:HTTP://www.stackoverflow.comAnd這裏的一些文字

..因爲所有的換行符已經在這個'單詞'中被刪除(因爲我在空格分裂,所有這些都被看作是一個單詞)。

我以爲我可以在換行符上分割,但是這對第一個示例中段落中輸入的URL不起作用,並且它也會在包含中斷的任何URL中間分割。

很明顯,我需要以某種方式找到URL並替換它們內部的換行符,但是我遇到了麻煩,因爲我似乎無法做到這一點!

如果我遺漏了任何細節,請隨時詢問,我會馬上回來。謝謝:)

PS - 這是編碼在C#中。

+0

有你第一次嘗試用空格代替休息。 – daryal 2012-03-28 10:59:05

+0

我不認爲我可以這樣做,因爲我很可能會刪除用戶可能在其消息中放置的有意換行符。 – surfitscrollit 2012-03-28 11:01:36

+0

請看我的第二個答案。起初我並不明白這個問題,但我認爲新的答案會爲你做好工作。 – JotaBe 2012-03-28 11:29:49

回答

1

請刪除其他答案。

我無法解決您的問題。不,我想我是。

您可以使用此正則表達式來找到所有的URL,wheter他們在幾個線被破壞或不:

(?<url>https?://(.|\r\n)*?(=?)) 

這將返回捕獲組,即「URL」包含您的網址,帶或不帶線在裏面打破。你可以通過(。| \ r \ n)*得到它,它允許通過\ r \ n(cr,lf)找到幾行破解的URL。檢查這是否是消息的行編碼結束。如果沒有,你可以用(。| \ n)或者你的情況改變羣組。

Oce你找到了你的網址,你可以刪除裏面的\ r \ n。

您可以使用此正則表達式的改進:

(?<url>https?://(.|(?<deleteMe>\r\n))*?(=?)) 

deleteMe組捕獲所有違規換行符的URL裏面,這樣你就可以安全地刪除它們。

重要事項:您必須使用多行選項運行正則表達式如果不是,則不起作用。

示例文本:

The firs url is http://www.casa.com/aqui.htm and the second is http://www.the 
house.com/broken url 

匹配:

url: http://www.casa.com/aqui.htm 
url: http://www.the\r\nhouse.com/broken 

刪除我的組相匹配的大膽\ r \ n

+0

非常感謝:)我會試試這個! – surfitscrollit 2012-03-28 11:29:55