replaceAll()无法按预期工作,并将辅助线程外的值传递给主线程

时间:2014-10-28 14:37:07

标签: java android html multithreading

两个问题:

解决用另一个特殊字符替换$ @它解决了问题。 问题1
我有一个变量String strVar,其中包含下面的文本(它从文件中读取)。现在我正在尝试使用replaceAll()替换文本(例如$pixeltrackers$"sampletext"),但它根本不会替换此特定字符串,可能是由于引号和空格等。可能是什么一种可能的解决方案?

<html>
    <head>
        $pixeltrackers$
    </head>
    <body>
        <div>
            <a href="$clickurl$"><img src="$iconurl$"/></a><h1>$headlinetext$</h1>
        </div>
        <div>
            <h2>$descriptiontext$</h2>
        </div>
        <div>
            <a href="$clickurl$"><img src="$mainurl$"/></a>
        </div>
        <div>
            <h3>Rating: $ratingtext$</h3>
            <form action="$clickurl$">
                <input type="submit" value="$ctatext">
            </form>
        </div>
        <div>
            <h6>by: $advertisertext$</h6>
        </div>
    </body>
</html>

问题2
我有一个带有 try-catch块的线程。在try块中,我将HTML存储在一个变量中,我想将其加载到webview中。现在Android / Java不允许在主线程之外的任何其他地方调用Webview。

如何在线程范围之外传递此String变量值?

1 个答案:

答案 0 :(得分:2)

<强>问题1

String#replaceAll将正则表达式的String表示作为其第一个参数。

$字符是正则表达式的特殊字符,表示输入的结束。 将其转义为\\$以引用它作为文字。

否则,请使用String.replace,它不会使用正则表达式。


Problem2

提出新问题并发布您的代码。