我有一个文本框,用户可以在其中粘贴网址。我想在将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;仅改变。 谢谢
答案 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)
您可以使用字符串函数Split
和Join
来获得结果。示例代码如下所示
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;