如何将变量插入到一段字符串中,并将单引号作为字符串的一部分。
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
答案 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,但可以转移以满足您的需求。
希望这有助于:)