【发布时间】:2016-02-23 04:07:22
【问题描述】:
我遇到了一个问题,我有一个 json 对象,其中有一个名为 message 的值,它会有很多字符串,有些甚至会包含以下格式的链接(比如这个网站如何有不同的粗体、斜体等格式)
[[www.randomwebsite.com]] 给出 www.randomwebsite.com
或
[[www.randomwebsite.com random]] 给出随机数
我最上面的正则表达式是:
\[\[.[^\]]*\]\]
我正在做一个.replaceAll 来尝试向它添加href 标签,但它不起作用,因为我觉得我做错了。我的代码是
String htmlHyperlinkMessage = htmlStrikeMessage.replaceAll(Constants.HYPERLINK_REGEX, "$1<a href=\"$2\"></a>");
但这给了我一个数组越界异常,我只是坚持这个,有人可以提出任何建议吗?
非常感谢,我在论坛上四处查看,但找不到与我的示例相关的任何内容,因为不同超链接的格式让我感到困惑。
编辑
这是我的堆栈跟踪日志
java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
at java.util.regex.Matcher.group(Matcher.java:579)
at java.util.regex.Matcher.appendEvaluated(Matcher.java:138)
at java.util.regex.Matcher.appendReplacement(Matcher.java:111)
at java.util.regex.Matcher.replaceAll(Matcher.java:319)
at java.lang.String.replaceAll(String.java:1600)
at com.myapp.android.model.PostItem.getMessage(PostItem.java:98)
【问题讨论】:
-
请发布您的 logcat 堆栈跟踪
-
正则表达式对我来说看起来不正确。例如,您没有转义方括号。
-
你的 href 字符串开头的 $1 是什么?
-
@abbath 我遵循了我在此找到的粗体和斜体的 java 正则表达式的标准,并认为它是相同的......但我确定它不是
-
@IlyaKogan 正则表达式模式取自使用相同类型的 iOS 应用程序,我无法将功能从 swift 转换为 android
标签: android json regex href replaceall