Android将变量传递给另一个活动##未按预期工作

时间:2014-02-24 19:17:10

标签: android regex

好的,我正在尝试创建一个活动的链接,它的工作原理。但是,传递它变量不适用于#charters:

        String hashTagString = tempValues.getDescription().replaceAll("[#]+[A-Za-z0-9-_]+\\b", "<a href=\"sherif-activity://myactivity?tag=$0\">$0</a>");

        Log.i(Utils.TAG, "hashTagString: " + hashTagString);

已启动的活动:

    String tag = getIntent().getData().getQueryParameter("tag");
    Log.i(Utils.TAG, "tag: " + tag);

Log Cat:

02-24 13:12:04.293: I/PROJECTCARUSO(29591): hashTagString: Everyone  loves <a href="sherif-activity://myactivity?tag=#hashtags">#hashtags</a> ! Take advantage of them by using them and clicking to search by them.

它启动的活动显示了这一点:

02-24 13:13:48.885: I/PROJECTCARUSO(29591): tag: 

但是如果我用硬编码值设置它,它会显示:

02-24 13:14:41.176: I/PROJECTCARUSO(29883): hashTagString: Everyone  loves <a href="sherif-activity://myactivity?tag=test">#hashtags</a> ! Take advantage of them by using them and clicking to search by them.
02-24 13:14:41.637: I/PROJECTCARUSO(29883): tag: test

我想传递全部价值,但如果我不能,我怎么能删除所有特殊的字符?

2 个答案:

答案 0 :(得分:0)

我认为您的正则表达式没有被正确评估请尝试使用以下正则表达式

\\#[A-Za-z0-9\\-_]+

您可能需要双重转义(\)。不需要序列末尾的\ b(单词边界),因为当它达到“无论如何它会在你的角色类中需要转义时会破坏,否则正则表达式试图评估一个无意义的范围而不是处理它作为一个字符

修改

现在你已经澄清了你的问题:获取空白标签是这个问题:

 String tag = getIntent().getData().getQueryParameter("tag");

应该是

 String tag = getIntent().getExtras().getString("tag");

并应以

发送
 new Intent(...).putExtra("tag", hashTagString);

答案 1 :(得分:0)

尝试(\s|\A)#(\w+)作为Java字符串"(\\s|\\A)#(\\w+)"

您可以在以下网站中对其进行测试:http://www.regexplanet.com/advanced/java/index.html