Windows API呼び出しPathCompactPathExを実行することにより、
[DllImport("shlwapi.dll", CharSet = CharSet.Auto)]
static extern bool PathCompactPathEx([Out] StringBuilder pszOut, string szPath, int cchMax, int dwFlags);
static string PathShortener(string path, int length)
{
StringBuilder sb = new StringBuilder();
PathCompactPathEx(sb, path, length, 0);
return sb.ToString();
}
またはあなたはこのように試すことができます:
string PathShortener(string path)
{
const string pattern = @"^(\w+:|\\)(\\[^\\]+\\[^\\]+\\).*(\\[^\\]+\\[^\\]+)$";
const string replacement = "$1$2...$3";
if (Regex.IsMatch(path, pattern))
{
return Regex.Replace(path, pattern, replacement);
}
else
{
return path;
}
}
または以下のように使用できます:
string ellipsisedPath = OriginalPath + '\0';
訪問:Win32 API呼び出しなしでWinFormsプログラムのパスに省略記号を追加(再検討)