如何在字符串中间插入变量

时间:2011-12-11 23:47:58

标签: javascript objective-c ios webview

开始我有UTFS。

尝试在字符串中间插入一个变量来填充Web视图表单而不使用字符串,只需追加并使代码变大。我目前的代码是

  

NSString * html = [webView stringByEvaluatingJavaScriptFromString:@" document.DetailView.innerHTML;" @" document.getElementsByName(' user_name')[0] .value =' somuser';"                          @" document.getElementsByName(' user_password')[0] .value =' somevar';"                         @" document.DetailView.submit();" ]

我试过了

  

NSString * html = [webView stringByEvaluatingJavaScriptFromString:@" document.DetailView.innerHTML;" @" document.getElementsByName(' user_name')[0] .value ='%@&#39 ;;"                          @" document.getElementsByName(' user_password')[0] .value =' somevar';"                         @" document.DetailView.submit();" ,txtField.text];

但它给我一个构建错误(特别是它正在寻找"]")。我猜我将不得不使用stringbyappend慢慢构建字符串,但我希望有一点运气,有人会遇到这个或有一个解决方法。这在c#中看起来很简单。

2 个答案:

答案 0 :(得分:1)

NSString的stringWithFormat通常是正确的方法。

示例:

[NSString stringWithFormat:@"somejavascript.var = '%@'", otherString];

我在第一个和第二个例子中首先看到的错误是:...TML;" @"doc...

答案 1 :(得分:0)

您可以使用stringWithFormat:将变量放入字符串中。在您的情况下,以下方法将起作用:

NSString *html = [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.DetailView.innerHTML; document.getElementsByName('user_name')[0].value = '%@'; document.getElementsByName('user_password')[0].value = 'somevar'; document.DetailView.submit();" , txtField.text]];

您的代码中还有一个错误,即您没有正确编码文本字段值 - 请考虑如果用户输入了撇号会发生什么。

然而,以这种方式构建JavaScript并不是一个好方法。考虑将JavaScript分解为外部JavaScript文件 - 这将使读取和写入更加容易。