在字符串的中间插入一个变量,但保留单引号(C#)

时间:2015-09-01 10:11:13

标签: c# string

如何将变量插入到一段字符串中,并将单引号作为字符串的一部分。

CODE:

var textMessage = "myText"; //local variable storing text to be injected to string

这是我尝试过的,但确实有效:

"//div[contains(@id,'msgError') and contains(text(),'+textMessage+')]" //string where textMessage should be insterted

OUTPUT应该是这样的:

"//div[contains(@id,'msgError') and contains(text(),'myText')]" //Output

6 个答案:

答案 0 :(得分:5)

您可以像这样使用databinding expression.

string.Format("//div[contains(@id,'msgError') and contains(text(),'{0}')]", textMessage)

您可以指定更多参数放入字符串。

答案 1 :(得分:2)

"//div[contains(@id,'msgError') and contains(text(),'+textMessage+')]"

这是C#语法中的单个字符串文字,除了特殊字符之外的所有内容都将按字符串形式存在。为了使textMessage计算其值,您必须将其添加为表达式:

"//div[contains(@id,'msgError') and contains(text(),'" + textMessage + "')]"

现在结果将是第一个字符串文字的连接,加上textMessage变量的值,再加上最后一个字符串文字。

作为旁注,连接这样的字符串通常是不受欢迎的,使用string.Format会更好。

答案 2 :(得分:1)

你关闭了。 textMessage必须在字符串之外:

"//div[contains(@id,'msgError') and contains(text(),'" + textMessage + "')]"

在您的解决方案中,textMessage和两个加号字符只是文字字符串的一部分。

答案 3 :(得分:1)

除了已经提到的string.Format(string, object...)解决方案之外,我只想指出在C#6.0中你可以使用新的字符串插值功能:

const string queenType = "lizard";
var message = $"I am the {queenType} queen!";

它与string.Format(string, object...)的工作方式类似,但我认为它更具可读性。

答案 4 :(得分:0)

对于C#中的基本字符串模板,string.Format是您的朋友。

var textMessage = "myText"; 
var template = "//div[contains(@id,'msgError') and contains(text(),'{0}')]";
var output = string.Format(template, textMessage);

答案 5 :(得分:0)

我应该使用string.Format,你可以使用占位符" {x}"在字符串中。这些占位符你可以根据需要添加为meny,前提是你用后面的参数中的匹配索引来快速移动x。 在你的例子中

war textmessage = "myText";
string.Format("This is formated to end with {0}",textmessage);

这应该写这是用myText结束的。

你可以通过添加更多参数来构建。

var name1 = "Emil";
var name2 = "Rachel"; 
string.Format("{1} and {0} are friends",name1,name2);

索引不一定是0 1 2,但可以转移以满足您的需求。

希望这有助于:)