2016-10-04 34 views
0

我遇到了一個問題,試圖用一個外部值用花括號替換某個字符串的某些內容。如何替換大括號及其內容在一個字符串中

相關的代碼示例:

string value = "6"; 
string sentence = "What is 3 x {contents}"; 
# insert some sort of method sentence.replace(value,"{contents}"); 

什麼是最好的方法,用值替換「{內容}」,因爲花括號內的名稱可能會改變,但不管是什麼名字,它會被包含在內大括號。

我看了一下正則表達式,或者概念在我身上丟失了,或者我找不到相關語法來完成我正在嘗試做的事情。那是完成這個最好的方法嗎?如果是的話如何?如果不是什麼會是一個更好的方法來完成這個?

+0

請參閱http://stackoverflow.com/questions/16537901/c-sharp-regex-match-curly-brackets-contents-only-exclude-braces –

回答

0

使用Regex.Replace

string value = "6"; 
string sentence = "What is 3 x {contents}"; 
var result = Regex.Replace(sentence, "{.*?}", value); // What is 3 X 6 

MSDN是開始理解正則表達式

+0

謝謝,在這種情況下,究竟是。*做什麼?我知道它與添加內容有關,但是每個項目單獨完成的事情是什麼 – Zannith

+4

@贊尼斯:現在是閱讀正則表達式入門的好時機,而不是單獨詢問每個小部分。 –

+0

正則表達式是錯誤的,嘗試用它替換「Example {text1} more text {text2}」。 – enkryptor

0

您可以使用此代碼:

Regex.Replace(input, @"{[^{}]+}", "new string"); 
1

的好地方。如果我理解正確的話,你想要做什麼,並假設你想在文本中替換「{contents}」的每個實例,我看到兩個解決方案:

1,使用簡單string.Replace(string, string)

public static string InsertContent(string sentence, string placeholder, string value) 
{ 
    return sentence.Replace("{"+placeholder+"}", value); 
} 

注意該函數返回一個新的字符串對象。

2.如果你想通過給定的值來代替括號之間的任何東西,或者只是對括號中的字符串是什麼無法控制,你也可以使用一個Regex

public static string InsertContent(string sentence, string value) 
{ 
    Regex rgx = new Regex(@"\{[^\}]*\}"); 
    return rgx.Replace(sentence, value); 
} 

再次,函數返回一個新的字符串對象。

相關問題