.cs ファイルのリストがあり、それぞれに文字列の commandID が含まれています。この文字列の値を取得する必要があります。
この検索と値の取得メカニズムを C# で実装するにはどうすればよいですか?
//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
}
プロジェクトの .Cs ファイルに CommandId という名前の文字列があり、各ファイルに手動で移動してその値を取得したくないため、その値を取得しようとしていると想定しています。
以下に従ってください
1- すべての .CS ファイルを別のフォルダーに貼り付けます。
2- FileSytem を使用して、そのフォルダー内のすべてのファイルを取得します
3- ストリーム リーダーを使用して .cs ファイル内のテキストを取得する
4- ファイル内の各行を検索したいテキストと比較します。
5- 文字列が一致する場合は、XML または別のテキスト ファイルなどの場所に保存します。
6- 次のファイルを読み、ステップ 3 に戻ります。
最後に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