我有一个数据视图,它由一个使用字符串列表的对象填充。我想通过在文本框中键入搜索词来选择合适的条目。
我的对象:
<div #visualTextDiv class = "visual_text" [ngStyle]=setStyles()>
<div *ngFor="let lineCounter of visualDivArray">
<app-visual-text-div></app-visual-text-div>
</div>
</div>
我的数据视图条目:
if(this.visualDivArray.length < currentDivIndex+1){
let newv = new VisualTextDivComponent()
this.visualDivArray.push(newv);
console.log("creating new " + this.visualDivArray.length);
}
this.visualDivArray[currentDivIndex].setData(textValue);
我的目标是过滤像Windows资源管理器中的搜索功能这样的条目,但不同之处在于我想要包含四列,而不仅仅是包含文件名的列。 有可能这样做吗?
我尝试过:
from pygame import *
from pygame.locals import *
import pygame
from sys import exit
from random import *
import time
pygame.init()
font.init()
screen = display.set_mode((1920, 1080), FULLSCREEN)
screen.fill((0, 0, 0))
countTime = 1
while countTime < 4:
default_font = pygame.font.get_default_font()
font_renderer = pygame.font.Font(default_font, 45)
label = font_renderer.render(str(countTime).\
encode('utf-8'), 1, (255, 255, 255))
screen.blit(label, (1920/2, 1080/2))
countTime += 1
time.sleep(1)
希望你能帮助我。
答案 0 :(得分:0)
为什么不能使用{/ 1}}方法
Contains()
答案 1 :(得分:0)
您可以将所有子列表合并到一个列表中,然后将Any扩展应用于要搜索的单词列表
foreach (my_object m in Source)
{
List<string> allStrings = m.Column1.Union(m.Column2)
.Union(m.Column3)
.Union(m.Column4)
.ToList();
bool exists = SearchWords.All(x => allStrings.IndexOf(x) != -1));
if(exists)
results.Add(m);
}
但是我会针对更传统的解决方案测试性能
答案 2 :(得分:0)
这样做的一种方法是重构你的类以允许搜索。这是一个使用索引的示例:
class my_object
{
class Coordinates
{
public int _column = 0;
public int _row = 0;
public Coordinates(int row, int column)
{
_column = column;
_row = row;
}
}
List<List<string>> columns = new List<List<string>>(4);
Dictionary<string, List<Coordinates>> searchIndex = new Dictionary<string, List<Coordinates>>();
public my_object()
{
for (int i = 0; i < columns.Count; i++)
{
columns[i] = new List<string>();
}
}
//This will create entries for each consecutive substring in each word that you add.
public void AddWord(string word, int column)
{
for (int i = 0; i < word.Length; i++)
{
int limit = word.Length - i;
for (int j = 1; j < limit; j++)
{
string temp = word.Substring(i, j);
if (!searchIndex.ContainsKey(temp))
{
searchIndex.Add(temp, new List<Coordinates>());
}
searchIndex[temp].Add(new Coordinates(columns.Count, column));
}
}
columns[column].Add(word);
}
//This will return a list of list of strings that contain the search term.
public List<List<string>> Find(string term)
{
List<List<string>> outVal = new List<List<string>>(4);
if(searchIndex.ContainsKey(term))
{
foreach(Coordinates c in searchIndex[term])
{
outVal[c._column].Add(columns[c._column][c._row]);
}
}
return outVal;
}
}