2016-10-04 37 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); 
} 

再次,函数返回一个新的字符串对象。

相关问题