簡體   English   中英

使用正則表達式搜索大字符串時,如何利用字母順序?

[英]How can I leverage alphabetical order when searching a large string with regex?

我正在制作iPhone文字游戲。 我有一個文本文件,其中包含用換行符分隔的每個英語單詞。

我嘗試了幾種檢查有效單詞的方法。 使用SQLite數據庫幾乎可以立即加載,但是搜索時間太長。 我可以在游戲加載時將所有內容加載到數組中,但是對於使用了兩年的iPod來說,這大約需要7秒鍾。 雖然搜索很快。 我發現最好的平衡是將整個文件加載到NSString並執行正則表達式:

NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"\n%@\n", word] options:NSRegularExpressionCaseInsensitive error:&error];

NSUInteger numberOfMatches = [regex numberOfMatchesInString:self.words options:0 range:NSMakeRange(0, [self.words length])];

NSLog(@"%i matches found", numberOfMatches);

但是,這並沒有利用列表按字母順序排列的事實。 我如何利用這一事實來更快地做到這一點?

一種轉折是我允許人們使用通配符,因此正則表達式可能類似於: @"wo.d"

兩級方法又稱為索引怎么樣?

檢查第一個字母並將所有帶有該字母的單詞加載到數組中。 如果所有單詞的加載時間為7秒,則對於帶有某個起始字母的單詞,平均加載時間應為7s /24≈0.3s。

如果沒有首字母,也可以使用最后一個,第二個等。 為此,您可以在SQLite中創建索引

暫無
暫無

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

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