使用C#将目录名添加到URL地址

时间:2015-11-12 19:18:28

标签: c# asp.net

我有一个文本框,用户可以在其中粘贴网址。我想在将URL保存到数据库之前为URL添加目录名。

<asp:TextBox ID="urlTextbox" runat="server"></asp:TextBox>

背后的代码

TextBox url = urlTextbox as TextBox;
string urlString = urlTextbox.Text;

让我们说urlString =&#34; mydomain.com/123456&#34;。我想用&#34; mydomain.com/directory/123456"替换它。 mydomain.com/directory对于所有网址都是相同的。最后一部分&#34; 123456&#34;仅改变。 谢谢

5 个答案:

答案 0 :(得分:3)

我建议您查看UriBuilder课程是否满足您的需求。

UriBuilder url = new UriBuilder(urlTextbox.Text);

现在您可以使用各种属性来更改您的网址。

string formattedUrl = string.Format("{0}://{1}/directory/{2}", url.Scheme, url.Host, url.Path);

更好的想法是使用Jared所述的另一个/同一UriBuilder来调整网址。

UriBuilder url = new UriBuilder(urlTextbox.Text);
url.Path = string.Format("directory/{0}", url.Path);

只需执行此操作即可将此对象用作Uri

Uri formattedUrl = url.Uri;

或者根据需要转换为字符串。

string formattedUrl = url.ToString();

您还可以使用Uri.TryParse(...)验证是否在文本框中输入了有效的网址。

要获取各个查询参数,您可以查看Uri对象。

UriBuilder url = new UriBuilder("mydomain.com/123456?qs=aaa&bg=bbb&pg=ccc");
url.Path = string.Format("directory/{0}", url.Path);

Uri formattedUrl = url.Uri;
string queryString = formattedUrl.Query;
// parse the query into a dictionary
var parameters = HttpUtility.ParseQueryString(queryString);

// get your parameters
string qs = parameters.Get("qs");
string bg = parameters.Get("bg");
string pg = parameters.Get("pg");

答案 1 :(得分:1)

您可以使用字符串函数SplitJoin来获得结果。示例代码如下所示

List<string> parts = urlString.Split(new char[] { '/'}).ToList();
parts.Insert(parts.Count - 1, "directory");

urlString = string.Join("/", parts);

答案 2 :(得分:0)

这是一种做法。使用.split()函数拆分urlString。

string[] parts = urlString.Split('/');

parts [parts.Length-1]将具有该数字。将它附加到您想要的字符串。

答案 3 :(得分:0)

我会做这样的事情:

//Assuming the address in urlString has the format mydomain.com/123456
string[] urlParts = urlString.Split('/');
string directory = "directory";
string finalUrl = urlParts[0] + "/" + directory + "/" + urlParts[1];

如果地址中包含其他“/”字符,请小心,例如前面加上 http:// 或类似字符。

希望它有所帮助。

答案 4 :(得分:0)

只需使用连接: 保存在临时字符串中

 temp="mydomain.com/directory/"

并将更改部分保存在另一个字符串中,如

 temp2="123456"

现在连接temp1和temp2,如下所示。

urlString=temp1+temp2;