c# - 搜索单词并获取整个字符串
问题描述
我有一个如下所示的列表框:
DANAHER -- 190,00 € -- 20 PCS -- 12:51:52.361
DANAHER -- 190,00 € -- 270 PCS -- 12:51:57.361
RENAULT -- 37,815 € -- 23 PCS -- 12:51:52.475
RENAULT -- 37,815 € -- 1 PCS -- 12:51:59.475
CAMECO -- 13,854 € -- 20 PCS -- 12:53:13.028
CAMECO -- 13,854 € -- 29 PCS -- 12:53:53.028
SAPSE -- 105,48 € -- 20 PCS -- 12:53:22.631
SAPSE -- 105,48 € -- 80 PCS -- 12:53:27.631
当然,现在每秒钟就有新公司不断地添加到列表框中。我想创建一个文本框,我可以在其中输入公司名称,如果存在条目,它会搜索我的列表框,如果存在,它应该获取字符串的其余部分并将其保存在某处
我的文本框示例
DANAHER RENAULT
期望的输出应为:
DANAHER -- 190,00 € -- 20 PCS -- 12:51:52.361
DANAHER -- 190,00 € -- 270 PCS -- 12:51:57.361
RENAULT -- 37,815 € -- 23 PCS -- 12:51:52.475
RENAULT -- 37,815 € -- 1 PCS -- 12:51:59.475
到目前为止我已经尝试过:
string[] words = richTextBox2.Text.Split(' ');
var toCheck = words;
var newList = listwithentrys.Where(x => toCheck.Any(check => x.Contains(check)));
List<String> selectedCollection = newList.ToList();
listBox4.DataSource = selectedCollection;
但似乎无缘无故无法正常工作。
解决方案
由于listwithentrys
是ListBox对象,因此您需要先获取行。
然后,您需要检查这些行是否以数组中的确切字符串开头。words
由于它们后面都有一个空格,因此您可以简单地检查该行是否以单词+空格开头。
var newList = listwithentrys.Items
.Cast<string>()
.Where(x =>
toCheck.Any(check => x.Trim().StartsWith($"{check} "))
)
推荐阅读
- java - JavaFX GridPane 正在调整大小而不是使用新数量的约束来保持位置
- java - 读取 Hashmap 中的所有值
- xamarin.forms - 如何在 MSBuild 中排除(禁用)PackageReference 的(传递)依赖关系?
- c# - C# 在 datagridview 或 listview 中刷新 websocket 实时异步数据
- python - 如何告诉 pytest-xdist 从一个文件夹顺序运行测试,其余的并行运行?
- python - Python中线性回归中的线性依赖
- node.js - 如何在nodejs中获取日期名称?
- javascript - 如何为元素赋予 V 模型
- python - 如何计算两个相互依赖的序列?
- java - Shenandoah 垃圾收集器 - 重定向指针如何在应用程序更改对象状态之前收集两次的区域中工作?