2015-03-18 3 views
0

Я пытаюсь внедрить метод replace для javascript в webview для android.Использование переменных в Javascript.replace

Этот код работает:

 { 
      mWebView.loadUrl("javascript:(function(){" + 
        "document.body.innerHTML = document.body.innerHTML.replace('hello', 'hi');" + 
        "})()"); 
      } 

Вместо того, чтобы поместить строку в метод, однако, я хочу использовать переменные. Я попытался использовать регулярное выражение, но он не работает.

 { 
      String old = "hello"; 
      String new = "hi"; 

      mWebView.loadUrl("javascript:(function(){" + 
        "var ol = new RegExp(old,'g');" + 
        "document.body.innerHTML = document.body.innerHTML.replace(ol, new);" + 
        "})()"); 
      } 

Есть что-то с моим кодом?

+0

Так что вы хотите оценить это? – tadman

+0

'new RegExp (« + old + », 'g')' и '.replace (ol," + new + ");' – blex

+0

var, похоже, не распознает текст внутри как строку ... любой способ исправить что? –

ответ

2

Вы должны процитировать из переменных при передаче их в строку, как этот

{ 
    String old = "hello"; 
    String _new = "hi"; 

    mWebView.loadUrl("javascript:(function(){" + 
        "var ol = new RegExp("+old+",'g');" + 
        "document.body.innerHTML = " +    
        "document.body.innerHTML.replace(ol, " +_new+ ");" + 
        "})()" 
    ); 
} 

Обратите внимание, что new является зарезервированным ключевым словом, и не должны использоваться в качестве имени переменной

+0

Извините, я думал, что это сработает и пометит его как ответ, но это закончилось тем, что не работало, когда я положил его в свой код. –

+0

Придется сделать несколько модификаций на моем конце, но сработал! благодаря –

Смежные вопросы