javascript - 在 Javascript.replace 中使用变量

标签 javascript android regex variables webview

我正在尝试在 android 的 webview 中注入(inject) javascript 的替换方法。

此代码有效:

       {
            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);" +
                    "})()");
            }

我的代码有问题吗?

最佳答案

将变量传递到这样的字符串时,必须引用变量

{
    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 是保留关键字,不应用作变量名

关于javascript - 在 Javascript.replace 中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29132902/

相关文章:

javascript - WHILE 循环内的 GM_xmlhttpRequest

javascript:N维数组的四舍五入数值

javascript - 使用 JQuery Ajax 进行电子邮件验证

regex - Awk 不匹配所有匹配我的所有条目

Ruby 围绕一个简单的模式查找和替换

javascript - 提交跨域ajax POST请求

Android应用内购买如何获取订阅的到期日期

android - 正确覆盖 RecyclerView 动画

java - 像 Gmail 应用程序一样的 Android Studio 抽屉导航

Java正则表达式,删除逗号左侧的内容