如何在C#中使用转义字符构建字符串

时间:2017-07-28 11:40:08

标签: c# .net

我尝试通过在需要的位置注入userIDportalID来构建目录路径。

string userID = HttpContext.Current.Request.Params["userID"];
string portalID = HttpContext.Current.Request.Params["portalID"];

// This is the acutal path ---> string folderName = @"C:\DotNetNuke 8.0\Portals\0\Users\017\17\17";
string folderName = "c:\\DotNetNuke 8.0\\Portals\\" + portalID + "\\Users\\0" + userID + "\\" + userID + "\\" + userID;
HttpContext.Current.Response.Write(folderName);
// This is what's returned ---> c:\DotNetNuke 8.0\Portals\\Users\0\\

2 个答案:

答案 0 :(得分:4)

最好的方法是使用Path.Combine方法,如下所示:

string userID = "testuser";
string portalID = "portal";
var path = Path.Combine(@"c:\DotNetNuke 8.0\Portals", portalID, "Users", "0" + userID, userID, userID);

Console.WriteLine(path);

结果将是

c:\DotNetNuke 8.0\Portals\portal\Users\0testuser\testuser\testuser

要详细了解Path.Combine支票MSDN documentation

答案 1 :(得分:2)

你拥有的实际上是正确的。看起来portalIDuserIdnull或空字符串""。但是,有更简单的方法可以逃脱 - 如果你使用@"some \ string",那么你唯一需要逃脱的就是"""

示例:

string userID = "17";
string portalID = "0";
string folderName = "c:\\DotNetNuke 8.0\\Portals\\" + portalID + "\\Users\\0" + userID + "\\" + userID + "\\" + userID;

给出

c:\DotNetNuke 8.0\Portals\0\Users\017\17\17

同样如下:

string folderName = @"c:\DotNetNuke 8.0\Portals\" + portalID + @"\Users\0" + userID + @"\" + userID + @"\" + userID;

同样如下:

string folderName = $@"c:\DotNetNuke 8.0\Portals\{portalID}\Users\0{userID}\{userID}\{userID}";
相关问题