我正在嘗試使用 Unity 和 C# 創建某種文字游戲。我希望我的應用程式離線作業,所以我不能使用 Web API。我找到了一個將近 55k 字的文本檔案,但最優化的使用方式是什么?我只想檢查輸入的字串是否是有效單詞。我猜我不能只創建一個包含 55k 個元素的串列并檢查每個元素,即使使用排序演算法也是如此。那么,其他應用程式如何在不破壞我的設備的情況下實作這一點呢?秘訣是什么?謝謝!
uj5u.com熱心網友回復:
嗯,55k英語單詞量不是很大。假設每個單詞都是10unicode 字符(這似乎被高估了),我們可以預期所需的空間是2 * 55000 * 10~ 1 MB。要有效地驗證單詞(掃描55k行可能很耗時),請嘗試使用HashSet<string>:
using System.IO;
using System.Linq;
...
HashSet<string> allValidWords = new HashSet<string>(File
.ReadLines(@"c:\myWords.txt")
.Where(line => !string.IsNullOrWhiteSpace(line))
.Select(line => line.Trim()), StringComparer.OrdinalIgnoreCase);
然后Contains用于驗證:
string myWord = "Jabberwocky";
...
if (allValidWords.Contains(myWord)) {
// myWord is valid
}
else {
// myWord is not valid
}
uj5u.com熱心網友回復:
使用SQLite所有單詞并將其存盤在一個表中。它的命令非常相似SQL server,部署它只需要一個dll. 對于此類目的,它非常快速且有用。
請參考以下鏈接: sqlite.org
注意:小心將資料保存在文本或資料庫等本地存盤中。黑客可以很容易地模擬你的游戲。
uj5u.com熱心網友回復:
您可能想要使用 SQLite 包并將所有這些單詞存盤在一個表中。它比從 txt 檔案中讀取要高效得多,因為它是關系型且易于查詢。
用最簡單的sql查詢就行了
從表中選擇列,其中 'your_word' IN (..,..)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/419864.html
標籤:
