繁体   English   中英

String ReplaceAll方法不起作用

[英]String ReplaceAll method not working

我正在使用此方法解析某些HTML中的纯文本URL并使其成为链接

private String fixLinks(String body) {
    String regex = "^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
    body = body.replaceAll(regex, "<a href=\"$1\">$1</a>");
    Log.d(TAG, body);
    return body;
}

但是,HTML中没有替换URL。 正则表达式似乎与其他正则表达式测试器中的URL匹配。 这是怎么回事?

^ anchor意味着正则表达式只能在字符串的开头匹配。 尝试删除它。

此外,它看起来像是$0而不是$1 ,因为你想要整个匹配而不是第一个捕获组,即(https?|ftp|file)

总之,以下适用于我:

private String fixLinks(String body) {
    String regex = "(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
    body = body.replaceAll(regex, "<a href=\"$0\">$0</a>");
    Log.d(TAG, body);
    return body;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM