我想知道如何使用正则表达式替换两个字符之间的字符串。
var oldString = "http://localhost:61310/StringtoConvert?Id=1"
预期结果= "http://localhost:61310/ConvertedString?Id=1"
答案 0 :(得分:3)
不需要正则表达式或字符串操作,请使用UriBuilder类。
var oldString = "http://localhost:61310/StringtoConvert?Id=1";
var newuri = new UriBuilder(new Uri(oldString));
newuri.Path = "ConvertedString";
var result = newuri.ToString();
答案 1 :(得分:1)
您可以使用Regex.Replace(string, string, string)
。因此,如果要替换/
和?
之间的子字符串,可以使用
string result = Regex.Replace(oldString, "(?<=\/)[^\?]*(?=\?)", "ConvertedString");
?<=
是一个lookbehind,\/
转义斜杠字符,[^\?]*
匹配任何字符不是?任意次,?=
都是先行,\?
会转义问号字符。
答案 2 :(得分:1)
您可以使用System.Uri
类代替Regex,然后连接或插入新值:
private static string ReplacePath(string url, string newPath)
{
Uri uri = new Uri(url);
return $"{uri.GetLeftPart(UriPartial.Authority)}/{newPath}{uri.Query}";
}
使用您的网址调用此方法,新路径(即&#34; ConvertedString&#34;)将产生输出:"http://localhost:61310/ConvertedString?Id=1"
小提琴here。
修改强>
@ Eser的答案比我的好。不知道那个班级存在。将他们的答案标记为正确的不是我的。