2011-12-11 60 views
0

從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 = [web視圖stringByEvaluatingJavaScriptFromString:@ 「document.DetailView.innerHTML;」 @「document.getElementsByName('user_name')[0] .value ='%@';」 @「document.getElementsByName('user_password')[0] .value ='somevar';」 @「document.DetailView.submit();」 ,txtField.text];

但它引發了一個構建錯誤(特別是它尋找「]」)。我猜測我將不得不使用stringbyappend緩慢地構建字符串,但我希望有人會遇到這個問題,或者有一個解決方法。這在c#中看起來很簡單。

回答

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文件 - 這將使讀取和寫入變得更加容易。

+0

你能否告訴我如何完成這項任務?順便說一句,即使它是UTFS,我仍然很欣賞這種迴應。 – Kevrone

+0

您可以使用'NSBundle'找到捆綁包中文件的路徑。 'NSString'提供了以字符串形式讀取文件的便捷方法。或者,您可能*能夠通過向文檔動態添加'

1

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

例子:

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

我第一次看到在你的兩個第一和第二示例中的錯誤是在這裏:...TML;" @"doc...

相關問題