在数组列表中搜索关键字
本文关键字:搜索 关键字 列表 数组 | 更新日期: 2023-09-27 17:59:13
有没有办法搜索将一行存储为字符串的数组列表?我想按数组列表中存储的每一行中的第一个单词进行搜索。我尝试做Arraylist.Contains((和Arraylist.IndexOf,但这些似乎不起作用?有人有什么建议吗?
谢谢
string[] matches = arrayList.Cast<string>()
.Where(i => i.StartsWith(searchTerm)).ToArray();
好吧,您需要查看列表中的每个项目并确定该行是否符合您的条件。
因此,在伪代码中:
for each line in listOfLines
if line StartsWith "some string"
// It's a match!
end if
end loop
C# 的 String
类有一个很好的StartsWith
方法,你可以使用。当然,如何循环列表将取决于您拥有的列表类型,但是由于ArrayList
似乎实现了实现IEnumerable
IList
,那么使用foreach(var item in list)
类型构造来构建循环应该没有问题。
首先,您希望使用List<string>
(System.Collections.Generic(而不是ArrayList
这样您就可以拥有强类型的字符串列表,而不是弱类型的对象列表。
其次,不,ArrayList.Contains
和ArrayList.IndexOf
将执行完整的对象匹配,它们不执行部分。
第三,该方法与你在这里问题的答案相同。如中,循环访问包含的值,并检查每个单独的字符串。你可以写它来使用 Linq,但想法是一样的。
为什么不只是这个
var results = from string x in arrayList where x.StartsWith(query);
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
ArrayList arraylist =new ArrayList();
private void Form1_Load(object sender, EventArgs e)
{
arraylist.Add("This is line1");
arraylist.Add("Jack is good boy");
arraylist.Add("Azak is a child");
arraylist.Add("Mary has a chocolate");
MessageBox.Show(GetSentenceFromFirstChar('J'));
}
public string GetSentenceFromFirstChar(char firstcharacter)
{
bool find=false;
int index=-1;
for (int i = 0; i < arraylist.Count; i++)
{
if ((char)arraylist[i].ToString()[0] == firstcharacter)
{
index = i;
find = true;
break;
}
}
if (find)
{
return arraylist[index].ToString();
}
else
{
return "not found";
}
}
}
}
也许有帮助..