How can I use IndexOf with SubString to pick a specific Character when there are more than one of them? Here’s my issue. I want to take the path “C:\Users\Jim\AppData\Local\Temp\” and remove the “Temp\” part. Leaving just “C:\Users\Jim\AppData\Local\” I have solved my problem with the code below but this assumes that the “Temp” folder is actually called “Temp”. Is there a better way? Thanks
if (Path.GetTempPath() != null) // Is it there?{
tempDir = Path.GetTempPath(); //Make a string out of it.
int iLastPos = tempDir.LastIndexOf(@"\");
if (Directory.Exists(tempDir) && iLastPos > tempDir.IndexOf(@"\"))
{
// Take the position of the last "/" and subtract 4.
// 4 is the lenghth of the word "temp".
tempDir = tempDir.Substring(0, iLastPos - 4);
}}
The better way is to use
Directory.GetParent()orDirectoryInfo.Parent:(Note that
Directory.GetParent(path)just gives you the Temp directory, as it doesn’t understand that the path is already meant to be a directory.)If you really wanted to use
LastIndexOfthough, use the overload which allows you to specify the start location.