2

C#.netで、このメソッドを作成する場合:

public static string returnFileNameOnly(string returnString)
{
    string val = returnString.Substring(returnString.LastIndexOf("/"));

    return val;
}

Path.GetFileNameを書き直しただけでしょうか?それともそれ以上のものがありますか?私が知る限り、ユーザーがInternet Explorerを使用していない限り、同じことPath.GetFileName(fileVariable.FileName)fileVariable.FileName返します(ただし、IE、Chrome、Firefoxでのみ試しました)。

本当に、それがその方法にすべてがあったかどうかはわかりませんでした。

----------------好奇心旺盛な方へ-----------------------

ずっと前にサイトで書いた方法とよく似たものを使っていたので、そのPath.GetFileName方法を学ぶ前に聞いてみましたが、わざわざ変更するべきかどうかわかりませんでした。

4

4 に答える 4

6

mscrolib disasmによると、GetFileNameは実装ほど複雑ではないと言えます。 GetFileNameは次のことを行います。

  1. GetFileNameは、パスに無効な文字が含まれているかどうかを確認します(System.IO.Path.CheckInvalidPathChars)。
  2. その後、System.IO.Path.DirectorySeparatorCharSystem.IO.Path.AltDirectorySeparatorChar、およびSystem.IO.Path.VolumeSeparatoCharを使用してパスを分割します。
  3. そして、ファイル名を返します。
于 2013-03-01T22:19:00.990 に答える
4

あなたはいつでも周りを突くことができます(共有ソース|ローター|モノ|リフレクター|ドットピーク):

public static string GetFileName(string path)
{
    if (path != null)
    {
        CheckInvalidPathChars(path);
        int length = path.Length;
        int num2 = length;
        while (--num2 >= 0)
        {
            char ch = path[num2];
            if (((ch == DirectorySeparatorChar) || 
                (ch == AltDirectorySeparatorChar)) || 
                (ch == VolumeSeparatorChar))
            {
                return path.Substring(num2 + 1, (length - num2) - 1);
            }
        }
    }
    return path;
}
于 2013-03-01T22:08:30.503 に答える
4
  • スラッシュがまったく含まれていないパス。
  • バックスラッシュはあるが通常のスラッシュがないパス。
  • いつかWindows以外のファイル名規則で.NETを実行する可能性のある代替システム。
于 2013-03-01T22:06:35.697 に答える
1

/と\の両方をディレクトリ区切り文字として使用できるため、システムメソッドはおそらくより複雑です。しかし、私は間違いなく言うでしょう:それがうまくいくなら、それを修正しようとしないでください!

このシステムメソッドは単純で短いように思われるので、ac#デコンパイラーでその内部を監視します。

Dis#-よく知られている商用バージョン、試用版が利用可能:http: //www.netdecompiler.com/

Jetbrains dotPeek-もう1つの有名なもの、無料:http ://www.jetbrains.com/decompiler/

于 2013-03-01T22:06:33.603 に答える