替换特定字符之间的字符串

时间:2017-10-06 20:01:24

标签: c# regex

我想知道如何使用正则表达式替换两个字符之间的字符串。

var oldString  = "http://localhost:61310/StringtoConvert?Id=1"

预期结果= "http://localhost:61310/ConvertedString?Id=1"

3 个答案:

答案 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的答案比我的好。不知道那个班级存在。将他们的答案标记为正确的不是我的