搜索arraylist获取关键字

时间:2011-06-14 20:39:15

标签: c#

有没有办法搜索将行存储为字符串的arraylist?我想搜索存储在arraylist中的每一行中的第一个单词。我试过做Arraylist.Contains()和Arraylist.IndexOf,但那些似乎没有工作?有人有什么建议吗?

由于

5 个答案:

答案 0 :(得分:2)

string[] matches = arrayList.Cast<string>()
                            .Where(i => i.StartsWith(searchTerm)).ToArray();

答案 1 :(得分:1)

好吧,您需要查看列表中的每个项目,并确定该行是否符合您的条件。

所以,在伪代码中:

for each line in listOfLines
    if line StartsWith "some string"
        // It's a match!
    end if
end loop

C#的String课程有一个很棒的StartsWith方法可以使用。如何循环遍历列表当然取决于您拥有的列表类型,但是ArrayList似乎实现了IList,它实现了IEnumerable,那么您应该没有问题foreach(var item in list)类型构造来构建循环。

答案 2 :(得分:0)

首先,您希望使用List<string>(System.Collections.Generic)而不是ArrayList,因此您可以拥有强类型的字符串列表,而不是弱类型的对象列表。

其次,不,ArrayList.ContainsArrayList.IndexOf会执行完整的对象匹配,但它们不会执行部分匹配。

第三,方法与your question here的答案相同。在中,循环包含的值,并检查每个单独的字符串。你可以写它来使用Linq,但想法是一样的。

答案 3 :(得分:0)

为什么不只是这个

var results = from string x in arrayList where x.StartsWith(query);

答案 4 :(得分:0)

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";
            }
        }


    }
}

也许有帮助..