我遇到了一個問題,試圖找出此問題。我需要 「修復」 一些鏈接,這裏有一個例子:從字符串中刪除文本,直到達到某個字符
- www.site.com/link/index.php?REMOVETHISHERE
- www.site.com/index.php?REMOVETHISHERE
所以基本上我想刪除一切,直到它到達?字符。謝謝你的幫助。
我遇到了一個問題,試圖找出此問題。我需要 「修復」 一些鏈接,這裏有一個例子:從字符串中刪除文本,直到達到某個字符
所以基本上我想刪除一切,直到它到達?字符。謝謝你的幫助。
string s = @"www.site.com/link/index.php?REMOVETHISHERE";
s = s.Remove(s.LastIndexOf('?'));
//Now s will be simply "www.site.com/link/index.php"
應該這樣做
謝謝,正是我想要的。我真是個白癡。我會在9分鐘內接受它。 –
挑剔,但'IndexOf'可能會比'LastIndexOf'更可取# – minnow
@minnow why ???如果字符串有多個'?'OP可能需要最後一個 –
使用string.split
。
string URL = "www.site.com/link/index.php?REMOVETHISHERE"
var parts = URL.Split('?');
然後parts[0]
將包含 「www.site.com/link/index.php」 和parts[1]
將包含 「REMOVETHISHERE」。然後你可以使用你想要的部分。
您應該添加檢查,以確保有試圖訪問數組的第二個元素前兩個部分。你可以(例如)檢查字符串是否包含「?」在嘗試撥打Split
之前。
儘管正確製作的字符串操作將起作用,但更一般的提取部分URI信息的方法是使用System.Uri
類型,該類型具有封裝這些操作的方法,例如,
var uri = new Uri("http://www.site.com/link/index.php?REMOVETHISHERE");
var part = uri.GetLeftPart(UriPartial.Path);
這將更清楚地傳達您的代碼的意圖,您將重新使用已知可用的當前實現。
構造函數System.Uri
如果字符串不代表有效的URI,將會拋出一個異常,但無論如何,如果遇到無效的URI,您可能會想在程序中調用其他一些行爲。要檢測無效的URI,您可以捕獲異常或使用重載之一。
要刪除最後一個 「?」及其之後的所有:
string input = @"www.site.com/link/index.php?REMOVETHISHERE";
input = input.Remove(input.LastIndexOf('?'));
OR
string input = @"www.site.com/link/index.php?REMOVETHISHERE";
input = input.Substring(0, input.LastIndexOf('?'));
現在輸出將是:
www.site.com/link/index.php
你能保證只有一個 '?'在你的字符串? –
是的。 Parapura已經發布了我想要的,謝謝。 –
@DanielMallott:如果它是一個有效的URL,它有* *只有一個''... – Fischermaen