2012-02-23 106 views
1

我需要替換以%開頭的單詞。正則表達式拆分和替換

例如Welcome to home | %brand %productName

希望拆就話與% begining這會給我{ brand, productName }

我的正則表達式低於平均水平,所以將不勝感激。

+0

這將是,如果你使用%品牌更容易% %productName% – Christophe 2012-02-23 07:26:22

+0

您是否試圖獲得僅包含「brand」和「productName」的數組,或者您是否試圖替換這些詞,如果是的話,您試圖將它們替換爲什麼? – 2012-02-23 08:00:51

+0

如果您有想要的解決方案,請不要忘記標記答案 – 2012-02-23 10:58:11

回答

1

沒有錯string.split辦法,你要知道,但這裏有一個正則表達式的方法:

string input = @"Welcome to home | %brand %productName"; 
      string pattern = @"%\S+"; 
      var matches = Regex.Matches(input, pattern); 
      string result = string.Empty; 
      for (int i = 0; i < matches.Count; i++) 
      { 
       result += "match " + i + ",value:" + matches[i].Value + "\n"; 
      } 
      Console.WriteLine(result); 
+0

感謝這就是我一直在尋找。需要刷上我的正則表達式。我以前使用string.split方法,但正在尋找一種不太麻煩的方法。再次感謝 – Christo 2012-02-23 13:11:41

0

試試這個:

(?<=%)\w+ 

這看起來對於立即百分比符號開頭的字字符的任意組合。現在

,如果你正在做的搜索,並在這些比賽代替,你可能想要刪除%符號一樣,所以你需要刪除的回顧後組,只有這個:

%\w+ 

但是這樣做,您的替換代碼將需要修剪每個匹配的%符號以獲取單詞。

+3

您可以使用'%(\ w +)'來匹配組並替換所需的任何內容。 – 2012-02-23 07:23:19

2

下面的代碼可以幫助你:

string[] splits = "Welcome to home | %brand %productName".Split(' '); 
List<string> lstdata = new List<string>(); 
for(i=0;i<splits.length;i++) 
{ 
    if(splits[i].StartsWith("%")) 
    lstdata.Add(splits[i].Replace('%','')); 
}