-1

たとえば、ファイルを検索する次の関数があります。

public void Search(string strExtension,
                            DirectoryInfo di,
                            List<FileSystemInfo> pResult)
        {
            try
            {

                foreach (FileInfo fi in di.GetFiles())
                {
                    if (InvokeRequired)
                    {
                        BeginInvoke(new Action(() => label2.Text = fi.Name));
                    }
                    if (fi.Name == "MessageLog.xsl")
                    {
                        foreach (FileInfo fii in di.GetFiles())
                        {
                        if (fii.Extension == strExtension)
                            pResult.Add(fii);
                        }
                        if (InvokeRequired)
                        {
                            BeginInvoke(new Action(() => label4.Text = pResult.Count.ToString() + Environment.NewLine));
                        }

                    }
                }

                    foreach (DirectoryInfo diChild in di.GetDirectories())
                        Search(strExtension, diChild, pResult);

            }
            catch (Exception e)
            {
            }
        }

この小さなクラスを使用して検索が終了したら:

public class MyItem
        {
            public FileSystemInfo fsi { get; set; }
            public override string ToString()
            {
                return this.fsi.Name;
            }
        }

また、backGroundWorker の完了イベントでファイル名を表示します。

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {

            for (int i = 0; i < this.fsi.Count; i++)
            {
                this.listBox1.Items.Add(new MyItem() { fsi = fsi[i] });
            }


        }

listBox の結果は、たとえば次のようになります。

danny125645.xml

yaron576567.xml

これはディレクトリなしのファイル名です。

ファイル名を解析する方法はありますか? 例えば:

danny.xml

yaron.xml
4

1 に答える 1

1

クラスを更新して変更します。

public override string ToString()
{
    return Regex.Replace(this.fsi.Name, @"[\d]", string.Empty);
}
于 2012-08-26T02:02:34.893 に答える