在数组列表中搜索关键字

本文关键字:搜索 关键字 列表 数组 | 更新日期: 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.ContainsArrayList.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";
            }
        }

    }
}

也许有帮助..