2016-12-15 22 views
0

我有一列(nvarchar(max))在我的表中包含JavaScript代碼。正如你在我的例子中看到的,我每行有2個獨立的javascript調用。StringReader查找我的搜索的所有實例

1號線:

(<a href="Javascript:TermDef(1000,'','451')">aaa</a>)<LI> <a href="Javascript:TermDef(1100,'','26')">bbb</a> 

線路2:

(<a href="Javascript:TermDef(1200,'','551')">ccc</a>)<LI> <a href="Javascript:TermDef(1300,'','270')">ddd</a> 

我有一個是通過串循環以下StringReader代碼,但它只能找到第一個實例。如果每行只有一個我正在搜索的實例,此代碼很有用。

using (StringReader rowData = new StringReader(reader[0].ToString())) 
{ 
    string line; 
    while ((line = rowData.ReadLine()) != null) 
    { 
     startVal = 0; 
     if (line.IndexOf("Javascript:TermDef", startVal) > -1) 
     { 
      startVal = line.IndexOf("Javascript:TermDef", startVal); 
      endVal = line.IndexOf(">", startVal); 
      value = line.Substring(startVal, endVal - startVal - 1); 
      Console.WriteLine(value); 
     } 
    } 
} 

我怎樣才能得到它找到的所有實例「的JavaScript:TermDef」在我行?

+0

循環使用'startVal = endVal'而不是隻檢查一次。 – Kateract

回答

1

查找多個實例是啓動參數存在的原因。如果你更新你的開始值並循環直到找不到更多的實例,你可以找到所有的實例。

using (StringReader rowData = new StringReader(reader[0].ToString())) 
{ 
    string line; 
    while ((line = rowData.ReadLine()) != null) 
    { 
     startVal = 0; 
     while (line.IndexOf("Javascript:TermDef", startVal) > -1) 
     { 
      startVal = line.IndexOf("Javascript:TermDef", startVal); 
      endVal = line.IndexOf(">", startVal); 
      value = line.Substring(startVal, endVal - startVal - 1); 
      Console.WriteLine(value); 
      startVal = endVal; 
     } 
    } 
} 
相關問題