2014-10-02 37 views
1

我正在嘗試編寫可以在降價文件中搜索任何純文本單詞或短語的代碼(用C#編寫)。目前我正在通過一個冗長的方法來做到這一點:將markdown轉換爲HTML,將HTML元素標籤從HTML文本中除去,然後使用簡單的正則表達式來搜索相關單詞/短語。不用說,這可能會很慢。在降價文本中進行純文本搜索

一個具體的例子可能會顯示問題。說降價文件包含通過提供搜索短語something significant(即忽略***的)

Something ***significant***

我希望能夠找到。

是否有這樣做的有效方式(即避免轉換爲HTML),並且不涉及我編寫自己的降價解析器?

編輯: 我想要一種通用的方式來搜索任何包含任何有效降價格式的降價文本中的文本或短語。第一個答案是匹配我給出的特定文本示例的方法。

編輯: 我應該清楚:這需要一個簡單的面向用戶的搜索和降價文件可以包含任何有效的降價格式。出於這個原因,我需要能夠忽略標記中的任何內容,如果用戶將標記轉換爲HTML,則用戶不會將其視爲文本。例如。指定圖像的降價文本(例如![Valid XHTML](http://w3.org/Icons/valid-xhtml10).應在搜索過程中跳過)。轉換爲HTML會爲用戶帶來不錯的結果,因爲它能夠合理準確地反映用戶所看到的內容(但這只是一個緩慢的解決方案,尤其是當需要查看大量降價文本時)。

+2

我可能是錯的,但我從你的問題得到的印象是,這是一個一些可能的例子。鑑於你收到的所有答案似乎都是特例,這可能有助於增加一些。 – 2014-10-02 09:01:19

+0

顯示您當前的代碼將有很大幫助,例如回答:單詞是否應該按照搜索順序進行回答?在單詞之間是否可以有其他單詞,以及允許哪些空格?不會簡單的重複'IndexOf()'工作嗎?你確定你想重新發明搜索引擎嗎? – CodeCaster 2014-10-02 10:07:19

+0

@MatthewHaugen你說的很對,我編輯了這個問題來強調這一點。 – Ben 2014-10-02 10:10:03

回答

0

使用正規

var str = "Something ***significant***"; 
var regexp = new Regex("Something.+significant.+"); 
Console.WriteLine(regexp.Match(str).Success); 
+0

這隻會解決一個非常具體的*示例*。 – Ben 2014-10-02 10:14:58

+0

我沒有你想匹配所有的東西名單,我根據你的榜樣,只是一個foreach(在whatevetever_collection_you_want_to_use VAR whatever_you_want_to_match){VAR新的正則表達式(whatever_you_want_to_match)內更換; – dariogriffo 2014-10-02 11:01:17

+0

是的,我可能必須這樣做。我希望不必寫很多(或單一非常複雜)的正則表達式模式來去掉所有的各種降價的文本,用戶就不會「看」,如果他們觀看它轉換爲HTML, – Ben 2014-10-02 15:37:59

-1

試試這個:

string input = "Something ***significant***"; 
string v = input.Replace("***", ""); 
Console.WriteLine(v) 

看看這個例子:enter link description here

+0

降價是一種標記支持更多標記符號的語言,而不僅僅是'***'。更換一個不會幫助。 – CodeCaster 2014-10-02 10:03:52