如何在字符串中间插入变量
Posted
技术标签:
【中文标题】如何在字符串中间插入变量【英文标题】:How to Insert a variable in the middle of a string 【发布时间】:2011-12-11 23:47:58 【问题描述】:开始我有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 = '%@';" @"document.getElementsByName('user_password')[0].value = 'somevar';" @"document.DetailView.submit();" , txtField.text];
但它给我一个构建错误(特别是它正在寻找“]”)。我猜我将不得不使用 stringbyappend 慢慢构建字符串,但我希望有人会遇到这个或有一个解决方法来获得一点运气。这在 c# 中看起来很简单。
【问题讨论】:
【参考方案1】:NSString 的stringWithFormat
通常是解决这个问题的正确方法。
例子:
[NSString stringWithFormat:@"somejavascript.var = '%@'", otherString];
我在您的第一个和第二个示例中首先看到的错误在这里:...TML;" @"doc...
【讨论】:
【参考方案2】:您可以使用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 文件 - 这将使其更易于读写。
【讨论】:
你能告诉我如何完成这项工作吗?顺便说一句,即使是 UTFS,我仍然感谢您的回复。 您可以使用NSBundle
找到捆绑包中文件的路径。 NSString
提供了以字符串形式读取文件的便捷方法。或者,您也许可以通过向文档动态添加 `以上是关于如何在字符串中间插入变量的主要内容,如果未能解决你的问题,请参考以下文章