如何从.cs文件列表中检索字符串的值?

时间:2012-12-18 06:41:58

标签: c# search

我有一个.cs文件列表,每个文件都包含一个字符串commandID。我需要检索此字符串的值。

如何在C#中实现此搜索和检索值机制?

3 个答案:

答案 0 :(得分:3)

    //Sample code to list all .cs files within a directory
    string[] filePaths = Directory.GetFiles(@"c:\MyDir\", "*.cs");


    // Sample code to read 1 file. 
    // Read each line of the file into a string array. Each element 
    // of the array is one line of the file. 
    string[] lines = System.IO.File.ReadAllLines(@"C:\Users\Public\TestFolder\file1.cs");

    // Display the file contents by using a foreach loop.
    foreach (string line in lines)
    {
        // INSERT YOUR SEARCH LOGIC HERE
    }

答案 1 :(得分:0)

我假设你的项目中的.Cs文件中有一些名为CommandId的字符串,你正试图获取它的值,因为你不想手动转到每个文件并获得它的值。

请遵循以下

1-将所有.CS文件粘贴到单独的文件夹中。

2-使用FileSytem获取该文件夹中的所有文件

3-使用流阅读器获取.cs文件中的文本

4-将文件中的每一行与您要查找的文本进行比较。

5-如果字符串匹配,则将其保存在某处,如XML或其他文本文件。

6-阅读下一个文件并返回步骤3.

答案 2 :(得分:0)

最后得到了它的ID :) 假设您已经找到了您想要的行,所以我从ID中获取了ID:

string line = "while(i<10){CommandID = 15852; i+=1;}";
//I've put a complicated code in the string to make you sure
var rightSideOfAssignment = line.Split(new string[] {"CommandID"}, StringSplitOptions.RemoveEmptyEntries)[1];
int val = 0,temp;
bool hasAlreadyStartedFetchingNumbers= false;
foreach (char ch in rightSideOfAssignment)  //iterate each charachter
{
    if (int.TryParse(ch.ToString(), out temp)) //if ch is a number
    {
        foundFirstInteger = true;
        val *= 10;
        val += temp;
    }
    else
    {
        if (hasAlreadyStartedFetchingNumbers)
            break;
        //If you don't check this condition, it'll result to 158521
        //because after hitting `;` it won't stop searching
    }
}
MessageBox.Show(val.ToString()); //shows 15852