我的表中有一个包含javascript代码的列(nvarchar(max))。正如您在我的示例中所看到的,每行有2个单独的javascript调用。
第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);
}
}
}
如何才能找到&#34; JavaScript的所有实例:TermDef&#34;在我的行?
答案 0 :(得分:1)
查找多个实例是start参数存在的原因。如果您更新起始值并循环直到找不到更多实例,则可以找到所有实例。
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;
}
}
}