2011-12-11 2 views
0

시작하기 나는 UTFS를 가지고있다.문자열의 중간에 변수를 삽입하는 방법

문자열을 중간에 삽입하여 문자열을 추가로 사용하지 않고 웹보기 양식을 채우고 코드를 거대하게 만들려고합니다. 현재 코드는

입니다. 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 = 웹뷰 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 파일로 분해하는 것을 고려하십시오. 이렇게하면 읽고 쓰는 것이 훨씬 쉬워집니다.

+0

이 작업을 수행하는 방법에 대해 뼈를 던져 주실 수 있습니까? 비록 그것이 UTFS 일지라도 나는 아직도 응답에 감사드립니다. – Kevrone

+0

번들에서 NSBundle을 사용하여 파일 경로를 찾을 수 있습니다. 'NSString'은 파일을 문자열로 읽을 수있는 편리한 메소드를 제공합니다. 또는 문서에 '

1

NSString의 stringWithFormat은 일반적으로 이에 대한 올바른 접근 방법입니다.

예 :

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

내가 모두 당신의 제 1 및 제 2 예에서 처음 볼 수있는 오류가 여기가 : ...TML;" @"doc...

관련 문제