簡體   English   中英

檢查字符串是否為子字符串C#的最快方法?

[英]Fastest way to check if a string is a substring C#?

我需要檢查項目列表是否包含字符串...這樣的列表就像在用戶在搜索框中鍵入內容時被過濾一樣。 因此,在發生文本更改事件時,我正在檢查輸入的文本是否包含在listox項之一中並過濾掉……類似:

value.Contains(enteredText)

我想知道這是否是篩選列表框項目的最快,最有效的方法?

Contains()方法是在C#中搜索子字符串的最佳方法嗎?

我要說的是,在非常例外的情況下,它足夠快且有效,即使在這樣的例外情況下,它也可能純粹是學術問題。 如果您使用它,並在與此相關的邏輯中遇到任何瓶頸,那么我會感到驚訝,但是只有到那時它才值得一看,然后您可能會在其他地方尋找。

Contains是我的代碼完成過濾算法中最便宜的方法之一(第6部分#6,其中腳注中描述的#7和模糊邏輯匹配要昂貴得多),即使快速鍵入也沒有問題用戶和下拉菜單中的數千個項目。

我非常懷疑這會給您帶來麻煩。

盡管這不是全局上最快的選項,但它是不需要編寫任何代碼的最快的選項。 它足以過濾下拉項。

對於較長的文本,您可能需要使用KMP算法 ,該算法具有線性時序復雜度。 但是請注意,對於非常短的搜索字符串而言,它不會有任何區別。

對於具有大量匹配項的搜索(例如,您從第一個到第二個字符獲得的匹配項),您可能需要預先計算一個表,該表將單個字母和字母對映射到下拉列表中的行,以更快地查找-以使用更多內存為代價(通常是編程中相當標准的折衷)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM