2013-01-20 118 views
1

中我真的是初學者,我已經知道搜索一個子字符串的字符串

string.indexOf(""); 

可以搜索整個單詞,但是當我試圖尋找e.g: ig out of pig, it doesn't work

我這裏有一個類似的字符串(部分):

<Special!>The moon is crashing to the Earth!</Special!> 

因爲我在我的文件中有很多這樣的,我只是無法編輯所有這些並添加一個空格,如:

< Special! > The moon is crashing to the Earth! </ Special! > 

我需要得到sub-string的特別!月亮正在撞向地球! 搜索詞的一部分而不添加插件如HTMLAgilityPack的簡單方法是什麼?

+2

'IndexOf' ...你只是最有可能使用它錯了,你有什麼嘗試? – gdoron

回答

1

的IndexOf會的工作,你很可能只是用它不當。

如果你的字符串是在一個變量調用mystring中,你會說mystring.IndexOf,然後傳遞你正在尋找的字符串。

string mystring = "somestring"; 
int position = mystring.IndexOf("st"); 
0

你是如何使用它?你應該使用這樣的:

string test = "pig"; 
int result = test.IndexOf("ig"); 
// result = 1 

如果你想讓它不區分大小寫使用

string test = "PIG"; 
int result = test.IndexOf("ig", StringComparison.InvariantCultureIgnoreCase); 
// result = 1 
0

請試試這個:

string s = "<Special!>The moon is crashing to the Earth!</Special!>"; 
int whereMyStringStarts = s.IndexOf("moon is crashing"); 

IndexOf應與空間工作過,但也許你有new linetab字符,而不是空格?

有時區分大小寫很重要。您可以通過稱爲comparisonType的附加參數來控制它。例如:

int whereMyStringStarts = s.IndexOf("Special", StringComparison.OrdinalIgnoreCase); 

更多有關IndexOfString.IndexOf Method at MSDN

無論如何,我認爲你可能需要正則表達式來創造更好的解析器。 IndexOf是非常原始的方法,你可能會陷入大量的代碼中。

0
string page = "<Special!>The moon is crashing to the Earth!</Special!>"; 
     if (page.Contains("</Special!>")) 
     { 
      pos = page.IndexOf("<Special!>"); 
      propertyAddress = page.Substring(10, page.IndexOf("</Special!>")-11); 
      //i used 10 because <special!> is 10 chars, i used 11 because </special!> is 11 
     } 

這會給你「月亮正在撞向地球!」