該基礎是大約2000個字符串的列表。他們大多數是單詞。其中一些是兩個和三個字。
現在我的查詢是一個字符串(4到9個字)。我必須找出在這個字符串中出現的所有這些2000個單詞或詞組。
截至目前我正在使用for循環,它爲我工作,但它花了很多時間。什麼是最有效的做法?
搜索在C上的字符串中發生的列表#
0
A
回答
1
您必須使用循環,沒有其他方式來處理多個項目。
這也許是更有效的(很難不代碼進行比較):
string[] words = your4to9Words.Split();
List<string> appearing = stringList
.Where(s => s.Split().Intersect(words).Any())
.ToList();
1
你可以嘗試HashSet的
地方你2000個字到這個HashSet的,然後用HashSet.Compare
HashSet<string> h = new HashSet<string>(); //load your dictionary here
if (h.Contains(word))
console.log("Found");
0
這應該是你在找什麼:
var binOf2000Words = new List<string>();
var binOf4To9Words = new List<string)();
// And at this point you have some code to populate your lists.
// We now need to cater for the fact that some of the items in the 2000Words bin will actually be strings with more than one word...
// We'll do away with that by generating a new list that only contains single words.
binOf2000Words = binOf2000Words.SelectMany(s => s.Split(' ')).Distinct().ToList();
var result = binOf2000Words.Intersect(binOf4To9Words).Distinct().ToList();
0
你可以嘗試這樣的事情:
List<string> binOf2000Words = new List<string>
{
"One",
"Two",
"Three Four"
};
string query = "One Four Three";
var queryLookup = query.Split(' ').ToLookup(v => v, v => v);
var result = binOf2000Words.SelectMany(s => s.Split(' ')).Distinct().Where(w => queryLookup.Contains(w));
相關問題
- 1. 在列表中搜索字符串; C#
- 2. 在列中搜索所有發生的字符串
- 3. 在搜索字符串在C#中的列表一個混亂的字符串
- 4. C++搜索字符串列表的特定字符串
- 5. hw搜索索引字符串列表中的子字符串?
- 6. 在字典列表中搜索列表中的字符串
- 7. 在字符串列表中搜索相同的子字符串
- 8. 在列表中搜索字符串
- 9. 列表中存在搜索字符串
- 10. 在列表中搜索字符串
- 11. 搜索字符串列表中的字符串
- 12. 如何從字符串列表中的字符串搜索
- 13. 在C++中搜索字符串中的字符串
- 14. Javascript - 搜索表格列的字符串
- 15. 搜索最長的字符串列表
- 16. C:在字典中搜索字符串
- 17. 搜索字符串列表中
- 18. 快速搜索C++中的字符串排序列表
- 19. 在Python中高效搜索字符串列表以獲取字符串列表
- 20. 從C#中的字符串列表生成隨機字符串?
- 21. 搜索字符串列表的字符串範圍
- 22. 搜索字符串中的字符串
- 23. C#:高效地搜索大字符串發生其他字符串
- 24. 如何在字符串中搜索C++
- 25. 在C++中部分字符串搜索
- 26. 在C中搜索一些字符串#
- 27. C#在網站中搜索字符串
- 28. 搜索字符串的列表從另一個列表中
- 29. 搜索字符串的話在陣列
- 30. 字符串列表排列搜索字符串
能否請您發佈您的代碼呢? –
使用循環是正確的 – chsword