2012-10-31 103 views
0

我有字符串string test="http://www.test.com//web?testid=12"如何在C#中替換字符串?

我需要用字符串//替換爲/

問題是,如果我使用string a=test.replace("//","/")我得到HTTP:/www.test.com/web testid = 12所有單斜槓(/),但我需要http://www.test.com/web ?testid = 12

我只需要第二//附近網絡,不是第一//附近WWW

如何做到這一點?

+0

凡URL字符串是從哪裏來的?它是您生成的URL還是來自外部源的字符串? – Fisch

回答

1
string test = @"http://www.test.com//web?testid=12"; 
test = test.Substring(0, test.LastIndexOf(@"//") - 1) 
     + test.Substring(test.LastIndexOf(@"//")).Replace(@"//", @"/"); 

還是因爲它的一個Uri,你可以這樣做:

Uri uri = new Uri(test); 
string newTest = uri.Scheme + @"//" + uri.Authority 
            + uri.PathAndQuery.Replace(@"//",@"/"); 
+0

我想你還需要添加端口,以防它不是該方案的默認值。 – siger

+0

@mleroy,是的,但我會在這種情況下使用[uri.Authority](http://msdn.microsoft.com/en-us/library/system.uri.authority.aspx),而不是uri.Host, – Habib

3

可以使第二取代

string test="http://www.test.com//web?testid=12"; 
string a=test.Replace("//","/").Replace("http:/","http://"); 

=)

0
string test="http://www.test.com//web?testid=12" 
string[] test2 = test.Split('//'); 

string test = test2[0] + "//" + test2[1] + "/" + test2[2]; 
0
Regex.Replace(test, "[^:]//", "/"); 
0

你也可以使用stringbuilder。

StringBuilder b = new StringBuilder();

b.Replace(「/」,「//」,int startindex,int count);

0

只需刪除與String.Remove()最後斜線之一:

string test="http://www.test.com//web?testid=12"; 
string output = test.Remove(test.LastIndexOf("//"), 1); 
0
var http = "http://someurl//data"; 
var splitindex = http.IndexOf("/") + 1; 
var res = http.Substring(splitindex+1, (http.Length-1) - splitindex).Replace("//","/"); 
http = "http://" + res; 

或者

StringBuilder strBlder = new StringBuilder(); 
strBlder.Append("http://someurl//data"); 
//use the previously used variable splitindex 
strBlder.Replace("//", "/", splitindex + 1, (http.Length) - splitindex);