对了,还可以整个文件夹检测...以下是部分代码
for(int i = 0; i < arrLine.Length; i ++ )//追行遍历
{
if(arrLine[i].Trim().StartsWith("///") || arrLine[i].Trim().StartsWith("//") || arrLine[i].Trim().StartsWith("/*")) // 忽略以"///" , "//" , "/*"开头的行
{
continue;
}
else
{
for(int j = 0; j < arrLine[i].Length; j ++ )
{
if(iFlags == 0 //在引号外面
&& arrLine[i][j] == '/' && arrLine[i][j + 1] == '/')//同时当前指向/,下一个也是/的情况,就是到注释了...
{
break;//跳出该行,开始新一行的检测
}
if(arrLine[i][j] == ';' && (arrLine[i][j + 1] == '/' || arrLine[i][j + 1] == '/r'))//遇到“;”,且后面一个是//或者是/r(其实为/r/n,到换行位置)
{
break;//跳出该行,开始新一行的检测
}
if(arrLine[i][j] == '"' && arrLine[i][j - 1] != '//')//遇到一个引号,同时它的前面一个不是"/"
{
iFlags++;//每遇到一个引号,iFlags就加一
}
if(arrLine[i][j] == '/'' && arrLine[i][j - 1] != '//')//遇到一个单引号,同时它的前面一个不是"/"
{
iFlag++;//每遇到一个单引号,iFlag就加一
}
switch(iFlags)
{
case 0 ://引号外面
{
switch(iFlag)//有单引号的时候...
{
case 0 :
if(IsSignCode(arrLine[i][j])//belongs to ArrSign
&& j < arrLine[i].Length - 1)//and don't reach the last one
{
// arrContent[i] = "●" + arrContent[i];
arrLine[i] = HaveBlankAndChange(arrLine[i], ref j, i + 1);
}
break;
case 1://iFlag是1,在单引号内
continue;
case 2 ://第二个单引号
iFlag = 0;//将iFlag置0
break;
}
break;
}
case 1 ://iFlags是1,在引号内
continue;
case 2 ://第二个引号
iFlags = 0;//将iFlags置0
break;
}//switch
}//for
}//else
}//for
lErrCount.Text = iErrorCount + " 个";//显示错误个数
for(int l = 1; l<=listError.Count;l++)
{
lbError.Items.Add("[" + l + "]" + listError[l - 1]);
}