2012-07-31 115 views
1

我已經編程了一年,我已經完成了多次操作,但從未理解它是如何實際工作的或者是實現它的最佳方式。字符串操作的複雜性

比方說,我有這個字符串

String abc = "https://uu2020.devuueva.com/portal/mesddsa/usforeer/nance/tings/M3C102d4104/1007/tingjack/default.aspx"; 

我想只有這部分

"https://uu2020.devuueva.com/portal/mesddsa/usforeer/nance/tings/M3C102d4104" 

字符/但是名稱可以改變,並且是動態的,「/」不是。有人可以展示最簡單和最好的方式。

+2

「字符串處理」 涵蓋的可能性** **巨大的面積,同時使用內置的字符串函數,並且還搞什麼規律表達式。你在這裏問的是沒有意義的,因爲你沒有給我們任何「規則」,操縱應該遵循 – freefaller 2012-07-31 08:41:56

+0

你的意思是,你會打破9號的字符串'/'? – 2012-07-31 08:42:08

+0

@AndreCalil yes – 2012-07-31 08:42:24

回答

5

這裏要記住的一件事是,如果你正在處理Uri,最好使用Uri類來提取信息片段,而不是試圖將解決方案串到一起。

http://msdn.microsoft.com/en-us/library/system.uri.aspx

例如:

var part = String.Format("{0}://{1}{2}",uri.Scheme,uri.Authority, String.Join("",uri.Segments.Take(7))); 

獲取你之後的部分。活生生的例子:http://rextester.com/JRWKOG58567


編輯

已經發現了一些要求,frameework限制,你可能會更好串糖化,畢竟,這可是你仍然可以利用從Uri類的一些功能。

var input = "https://uu2020.devuueva.com/portal/mesddsa/usforeer/nance/tings/M3C102d4104/1007/tingjack/default.aspx"; 
var uri = new Uri(input); 
StringBuilder sb = new StringBuilder(); 
sb.AppendFormat("{0}://{1}/",uri.Scheme,uri.Authority); 

var parts = uri.PathAndQuery.Split(new char[]{'/'},StringSplitOptions.RemoveEmptyEntries); 
for(var i=0;i<6;i++){ 
    sb.AppendFormat("/{0}",parts[i]) ; 
} 
Console.WriteLine(sb.ToString()); 

活生生的例子:http://rextester.com/HBK80648

+0

我從數據庫中獲取它,並且需要獲取其中的一部分來執行存儲過程以從DB獲取其他信息 – 2012-07-31 08:44:05

+0

@fdgfdgsdfg - 請參閱使用示例進行更新。 – Jamiec 2012-07-31 08:48:08

+0

+1不知道它可以做到這一點。字符串爲 – 2012-07-31 08:49:54

2
var t="https://uu2020.devuueva.com/portal/mesddsa/usforeer/nance/tings/M3C102d4104/1007/tingjack/default.aspx"; 
    string[] g= t.Split('/'); 
    var h=String.Join("/", g.Where((i,n)=>n<9).ToArray()); 
    Console.write(h); 

結果:https://uu2020.devuueva.com/portal/mesddsa/usforeer/nance/tings/M3C102d4104

+0

我們假設使用「Dumb()」函數的程序集 – 2012-07-31 08:47:15

+0

@fdgfdgsdfg忽略這個,我編輯了。 – 2012-07-31 08:47:59

+0

@fdgfdgsdfg你可以將它結合到一行,但我分開更清晰。 – 2012-07-31 08:49:26