2010-02-24 23 views
0

目前,我正在做一堆的正則表達式替換這樣正則表達式替換字符串沒有重新說明

_skeleton = Regex.Replace(_skeleton, "&%currTIME", DateTime.Now.ToString()); 

有沒有什麼辦法讓它所以我沒有寫「_skeleton =」?

也許使用'out'?

回答

2

由於字符串是不可變的,所以不能更改它們的內容。你必須用你想要的內容創建一個新的字符串。

認爲它像任何其他不變類型(日期時間,整型,等等)

int i = 1; 
i++; // i = i + 1 
i += 2; // i = i + 2 

DateTime d = DateTime.Now 
d = d.AddDays(1); 

string s = "s"; 
s = s + "tring"; 

你可以用的功能是一個小的性質更多的功能:

public void MyRegexReplace(ref string mystring, string pattern, string replaceWith) 
{ 
    mystring = Regex.Replace(mystring, pattern, replaceWith); 
} 

然後這樣稱呼它:

MyRegexReplace(ref _skeleton, "&%currTIME", DateTime.Now.ToString()); 

但這對我來說似乎沒有用。

+0

只需使用'mystring'作爲參數:/ – 2010-02-24 21:51:29

+0

是的。只是編輯來做到這一點。忘記了一秒鐘。 – Joel 2010-02-24 21:52:42

0

如果你不希望有繼續相同的字符串重複自己多替換,你可以嵌套調用Regex.Replace()

_skeleton = Regex.Replace(
        Regex.Replace(_skeleton, "foo", "bar"), 
      "&%currTIME", DateTime.Now.ToString()); 

(編輯答案,因爲我的反應是太長的評論)

你並不需要甚至縮進他們:

_skeleton = Regex.Replace(Regex.Replace(Regex.Replace/*...*/(_skeleton, 
      "foo", "bar"), 
      "baz", "blaz"), 
      //.. 
      "TIMTOWTDI", "There Is More Than One Way To Do It" 
      )); 
+0

不幸的是,我有一個20項內容替換。如果不寫一個新的話,這是不可讀的。 – cam 2010-02-24 21:45:17

+0

@cam:我在原始答案中已經回覆了您的評論,因爲評論框對此太過尷尬。 – 2010-02-24 21:52:02

0

如何界定:

void static void RexReplace(ref strTarget, string searchPatter, string replacePattern) 
{ 
     str = Regex.Replace(str, searchPatter, replacePattern); 
} 

,然後寫

RexReplace(ref _skeleton, "&%currTIME", DateTime.Now.ToString());