2013-11-22 8 views
0

我不知道這是什麼proplem?我試圖解決它,但我沒有得到任何結果!如何從特定字符的鏈接中進行子串處理?

我的瀏覽器鏈接

http://localhost:49496/Activated.aspx?id=2 

而且代碼

string uri = HttpContext.Current.Request.Url.AbsoluteUri; 
      int num1 = uri.IndexOf('='); 
      int num2=uri.Length-1; 

      string ID = uri.Substring(num1,num2); 

錯誤說:

索引和長度必須引用位置的字符串中。 參數名稱:長度

enter image description here 那麼,它有什麼問題呢?

+2

NUM2多少煤焦服用。而不是最後一個索引。 –

回答

3

子字符串不是做你看到你試圖做的事......這是獲取查詢字符串參數id的值。

你得到一個查詢字符串參數,如:

string id = Request.QueryString["id"]; 

如果您id實際上是一個int,你可以這樣做:

int realId = 0; 
string id = Request.QueryString["id"]; 
if (Int32.TryParse(id, out realId)) 
{ 
    //do something with realId  
} 
+0

非常感謝。最佳答案<3 :) –

+1

@ F505,表示同意。這就是爲什麼我提出了這個答案(這比我的更好),也許你應該做同樣的事情,然後將其標爲答案? – Alex

5

如果你只是想參數隔離:

string ID = uri.Substring(num1); 

(的失敗的原因大衛·皮爾金頓的解釋是正確的。)

+0

...或者'num1 + 1',假設他不想要'=',並且假定永遠不會有另一個參數......並且假設總會有至少一個參數。 – MikeSmithDev

4

的問題是,第二個參數是的長度你正在尋找和num2子是太大,操作工作

變化的第二個參數uri.Length - num1

另一種方法是不包含第二個參數。在這種情況下,從您提供的索引中取出子串直到字符串結尾。

在這裏,有一個讀通過對方法的MSDN文檔,你會看到你在哪裏錯了

String.Substring Method (Int32, Int32)

最好的辦法是

uri.Substring(uri.IndexOf('=')+1); 
2

的開放的我們已經提供了方法搜索,不需要自己做:

Uri uri = new Uri("http://localhost:49496/Activated.aspx?id=2"); 
Console.WriteLine(uri.Query.Split('=')[1]); 

請注意,在您的實際(生產)代碼中,您可能希望包含一些錯誤檢查以驗證查詢部分是否包含「id」。

相關問題