2011-06-14 118 views
0

有什麼方法可以搜索一個存儲行作爲字符串arraylist?我想通過存儲在數組列表中的每一行中的第一個單詞進行搜索。我試着做Arraylist.Contains()和Arraylist.IndexOf,但這些似乎沒有工作?任何人有任何建議?關鍵字搜索arraylist

感謝

+0

您是否使用了'ArrayList'或'array'或'列表'? – 2011-06-14 20:42:00

+0

使用arraylist的我使用 – hWorld 2011-06-14 20:42:22

+0

如果可能請切換到列表。它會減少鑄造。 – 2011-06-14 20:45:11

回答

2
string[] matches = arrayList.Cast<string>() 
          .Where(i => i.StartsWith(searchTerm)).ToArray(); 
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)類型構造來構建循環時應該沒有問題。

0

首先,你要使用List<string>(System.Collections.Generic),而不是ArrayList這樣你就可以有一個字符串的一個強類型的列表,而不是對象的弱類型列表。

其次,不,ArrayList.ContainsArrayList.IndexOf將執行完全對象匹配,它們不執行部分。

第三,該方法與your question here的回答相同。如在循環所包含的值,並檢查每個單獨的字符串。你可以寫這個來使用Linq,但這個想法是一樣的。

+0

強類型和弱類型之間的區別是什麼? Im新的c#soive從未聽說過List <> – hWorld 2011-06-14 20:45:39

+1

'ArrayList'將所有東西都存儲爲'object'。沒有保護措施,您可以添加任何內容。一個字符串,一個整數,一個'Foo'類型的對象,任何東西。一個普通的'List '將限制所有輸入爲'T'('T'是一個佔位符,ergo,'List ')。從列表中添加和檢索項目都是以'T'類型完成的。對於值類型,拳擊的數量較少。對於其他類型,無需投入或退出。 – 2011-06-14 20:48:00

+0

@Dominique,更多關於ArrayList vs'List ',我建議[從這裏開始](http://stackoverflow.com/questions/3530350/what-is-difference-bw-generic-list-and-arraylist-generic -list-VS-哈希表根)。 – 2011-06-14 20:50:23

0

爲什麼不只是這個

var results = from string x in arrayList where x.StartsWith(query); 
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"; 
      } 
     } 


    } 
} 

也許有助於..