2015-06-06 25 views
2

我有一個字符串,其中有一些鍵位在<之間< >>。替換特定字符之間的數據

string s = "<p>Hi <<USER>>,<br/>How are you doing<br/>Regards,<br/><<SENDER>></p>"; 

我想先取中,我做了一個列表中的鍵名用戶和發件人:

var keys = new List<string>(); 
      foreach (Match match in Regex.Matches(s, @"<<(.*?)>>")) 
      { 
       keys.Add(match.Groups[1].Value); 

      } 
List<string> values= new List<string>(){"John","Team"}; 

後,我們拿到鑰匙,我想通過另一份名單,以取代這些鍵(命名這對於這些鍵的值,並在此值)想要的結果爲:

string s = "<p>Hi John,<br/>How are you doing<br/>Regards,<br/>Team</p>"; 

字符串s可以是任何東西,無鍵和值也可能有所不同,但按鍵永遠是enclos編輯在<之間< >>

+0

是否有您想知道如何用一個具體問題? – Amit

+1

難道會有更多/不同的佔位符,而不僅僅是'<>'和'<>'?你只是想用'values'中的第一個字符串替換第一個佔位符,然後用'values'中的第二個字符串替換第二個佔位符,依此類推?如上所述,目前尚不清楚您需要什麼。 –

+0

@GrantWinney:是的,你是正確的,可以有任何數量的佔位符,但他們都將被圍在<<>>之間, 'values'中的字符串將等於'keys'中字符串no的數量,默認情況下,我需要用值中的第一個字符串替換第一個佔位符,以便第一行中的字符串's'被轉換爲字符串'''在最後一行。 – kakroo

回答

2

正如@AlexBell所建議的,您可以簡單地使用String.Replace()方法。 此外,它更方便申報佔位符/值對集合,像這樣:

string s = "<p>Hi <<USER>>,<br/>How are you doing<br/>Regards,<br/><<SENDER>></p>"; 

Dictionary<string, string> dictionary = new Dictionary<string, string>(); 
dictionary.Add("<<USER>>", "Jhon"); 
dictionary.Add("<<SENDER>>", "Team"); 

StringBuilder text = new StringBuilder(s); 
foreach (var entry in dictionary) 
{ 
    text.Replace(entry.Key, entry.Value); 
} 

Console.WriteLine(text.ToString()); 
0

你的業務邏輯是有點不清楚,所以基於剛好合格的猜測,你可以申請標準的.NET/C#String.Replace方法(字符串,字符串) (RE:https://msdn.microsoft.com/en-us/library/fk49wtc1%28v=vs.110%29.aspx),例如:

string s = "<p>Hi <<USER>>,<br/>How are you doing<br/>Regards,<br/><<SENDER>></p>".Replace("<USER>", "John").Replace("<SENDER>", "Team"); 

希望這可能有所幫助。

2

此功能將執行你要求的替代品,使用Regex.Replace

public static string ParseTemplate(string template, string username, string senderName) 
{ 
    template = Regex.Replace(template, @"<<USER>>", username); 
    return Regex.Replace(template, @"<<SENDER>>", senderName); 
} 

例子:

string s = "<p>Hi <<USER>>,<br/>How are you doing<br/>Regards,<br/><<SENDER>></p>"; 
ParseTemplate(s, "John", "Team").Dump(); 

輸出:

<p>約翰嗨,< BR/>你好嗎< BR/>問候,< BR/>隊</P >

您可以在一個循環在你的字典或名稱的列表進行調用。

0
//First we have lists of values (users) and senders 
List<string> values= new List<string>(){"John","Team"}; 
List<string> senders = new List<string>(){"John","Team"}; 
//Then we can join that list using string.join 
var allUsers = string.Join(",", values); 
var allSender = string.Join(",", senders); 

//Next we will be replacing it in our string 
var namedString = Regex.Replace(string, @"<<USER>>", allUsers); 
var output = Regex.Replace(namedString , @"<<SENDER>>", allSender);