2012-09-24 61 views
-5
替換動態值

http://www.test.com/test.aspx?testinfo=&|&查找並通過對循環

我想從一個表中的值來代替&。我的姓名和年齡兩個PARAMATERS,我需要substitue並獲得網址如下:

http://www.test.com/test.aspx?testinfo=name|age

如果我有3個字符串參數被替換爲一個網址:

http://www.test.com/test.aspx?testinfo=&|&

即姓名,年齡,地址爲上述網址:

http://www.test.com/test.aspx?testinfo=name|age|address

string URL=string.Empty; 
URL=http://www.test.com/test.aspx?testinfo=&|&; 
//in this case fieldsCount is 2, ie. name and age 
for(int i=0; i<fieldsCount.Length-1;i++) 
{ 
     URL.Replace("*","name"); 
} 

如何添加「年齡」以便獲得?任何輸入都會有幫助。

http://www.test.com/test.aspx?testinfo=name|age

+0

這個職位是不是很清楚。你可以嘗試編輯你的文章嗎? –

回答

1

我想這是你想要的,

List<string> keys = new List<string>() { "name", "age", "param3" }; 
    string url = "http://www.test.com/test.aspx?testinfo=&|&;"; 
    Regex reg = new Regex("&"); 
    int count = url.Count(p => p == '&'); 

    for (int i = 0; i < count; i++) 
    { 
     if (i >= keys.Count) 
      break; 
     url = reg.Replace(url, keys[i], 1); 
    } 
1

我好奇的兩件事情。

  • 你爲什麼要使用&的東西來代替,當這種具有查詢字符串以鍵/值對 之間的分隔符中的上下文 意思?
  • 爲什麼你的字符串只有2個字段(&|&),當有時候 的值用它取代時有2個以上的鍵?

如果這些事情沒有關係,那麼對我來說更有意義的是有一個替換字符串的其他東西......例如http://www.test.com/test.aspx?testinfo=[testinfo]。當然,你需要選擇一些除了你期望的東西外,在你的Url中顯示的機會。然後,您可以像下面這樣替換它:

url = url.Replace("[testinfo]", string.Join("|", fieldsCount)); 

請注意,這並不需要你的for循環,並應導致你的預期網址。 請參閱msdn上的string.Join

使用每個元素之間指定的 分隔符連接字符串數組的所有元素。

0

如果我理解正確的,我想你需要的東西是這樣的:

private static string SubstituteAmpersands(string url, string[] substitutes) 
{ 
    StringBuilder result = new StringBuilder(); 
    int substitutesIndex = 0; 

    foreach (char c in url) 
    { 
     if (c == '&' && substitutesIndex < substitutes.Length) 
      result.Append(substitutes[substitutesIndex++]); 
     else 
      result.Append(c); 
    } 

    return result.ToString(); 
}