0

.cs ファイルのリストがあり、それぞれに文字列の commandID が含まれています。この文字列の値を取得する必要があります。

この検索と値の取得メカニズムを C# で実装するにはどうすればよいですか?

4

3 に答える 3

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
    }
于 2012-12-18T06:47:34.473 に答える
0

プロジェクトの .Cs ファイルに CommandId という名前の文字列があり、各ファイルに手動で移動してその値を取得したくないため、その値を取得しようとしていると想定しています。

以下に従ってください

1- すべての .CS ファイルを別のフォルダーに貼り付けます。

2- FileSytem を使用して、そのフォルダー内のすべてのファイルを取得します

3- ストリーム リーダーを使用して .cs ファイル内のテキストを取得する

4- ファイル内の各行を検索したいテキストと比較します。

5- 文字列が一致する場合は、XML または別のテキスト ファイルなどの場所に保存します。

6- 次のファイルを読み、ステップ 3 に戻ります。

于 2012-12-18T06:49:10.700 に答える
0

最後に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
于 2012-12-18T07:51:38.100 に答える