I am trying to put the Environment.UserName
inside of the Path for my Process.Start
call, below is the code I currently have:
private void viewButton_Click(object sender, EventArgs e)
{
Process.Start(@"C:\Users\{0}\Documents\Content\New folder", Environment.UserName);
}
How do I put replace the {0}
with the Environment.UserName?
CodePudding user response:
Your original question is how to substitute a placeholder in a string. For this ConnorTJ 's answer is perfectly fine. Interpolated strings are the preferred way to go.
string s = $"The current users name is {Environment.UserName}.";
Alternatively you could use string.Format
:
string s = string.Format("The current users name is {0}.", Environment.UserName);
But as also others have already mentioned there are better ways to retrieve system folders. For getting the document folder you'd better use
string docFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
For adding the subfolder use System.IO.Path.Combine()
:
string folder = Path.Combine(docFolder, @"Content\New folder");
Starting a process and just passing a folder works because it will open the application which is assigned to folders, most likely Windows Explorer. Anyhow, if you want to make sure that Windows Explorer will be opened i'd reccomend to explicitely start Explorer and pass the folder as argument:
Process.Start("explorer.exe", folder);
CodePudding user response:
After discussion in the comments, the issue was that he was wanting to place the Environment.UserName
inside of the {0}
in the Path.
So, with that being said, using Interpolated Verbatim strings (https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/string-interpolation#:~:text=An interpolated verbatim string starts," or "}}".) is what he was requesting, like so:
$@"C:\Users\{Environment.UserName}\Documents\Content\New folder"