Android新手求助:如何用Matcher和Pattern替换URL中两处字符串
使用Matcher和Pattern完成URL替换的Android实现
嘿,作为Android开发新手,你要的这个URL替换需求用Matcher和Pattern完全能搞定,我给你拆解成清晰的代码示例,保证你一看就懂!
咱们先明确核心需求:
- 把URL里的
/vp/替换成/ - 要是URL里存在
/s150x150/,就把它替换成/s720x720/
Kotlin 实现代码
import java.util.regex.Pattern fun modifyImageUrl(originalUrl: String): String { var modifiedUrl = originalUrl // 第一处替换:将"/vp/"替换为"/" val vpPattern = Pattern.compile("/vp/") val vpMatcher = vpPattern.matcher(modifiedUrl) modifiedUrl = vpMatcher.replaceAll("/") // 第二处替换:检查到"/s150x150/"时替换为"/s720x720/" val sizePattern = Pattern.compile("/s150x150/") val sizeMatcher = sizePattern.matcher(modifiedUrl) if (sizeMatcher.find()) { modifiedUrl = sizeMatcher.replaceAll("/s720x720/") } return modifiedUrl } // 测试一下效果 fun main() { val originalUrl = "cd.com/vp/3070d0210e464e/5AEFB3ED/t51.2885/s150x150/24845474_1790806444289980_66798452736_n.jpg" val newUrl = modifyImageUrl(originalUrl) println(newUrl) // 输出结果:cd.com/3070d0210e464e/5AEFB3ED/t51.2885/s720x720/24845474_1790806444289980_66798452736_n.jpg }
Java 实现代码
要是你习惯用Java开发,对应的版本是这样的:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class UrlModifier { public static String modifyImageUrl(String originalUrl) { String modifiedUrl = originalUrl; // 替换"/vp/"为"/" Pattern vpPattern = Pattern.compile("/vp/"); Matcher vpMatcher = vpPattern.matcher(modifiedUrl); modifiedUrl = vpMatcher.replaceAll("/"); // 检查并替换"/s150x150/"为"/s720x720/" Pattern sizePattern = Pattern.compile("/s150x150/"); Matcher sizeMatcher = sizePattern.matcher(modifiedUrl); if (sizeMatcher.find()) { modifiedUrl = sizeMatcher.replaceAll("/s720x720/"); } return modifiedUrl; } public static void main(String[] args) { String originalUrl = "cd.com/vp/3070d0210e464e/5AEFB3ED/t51.2885/s150x150/24845474_1790806444289980_66798452736_n.jpg"; String newUrl = modifyImageUrl(originalUrl); System.out.println(newUrl); } }
简单解释下逻辑
- 第一处替换:用
Pattern.compile()创建匹配规则,再通过Matcher.replaceAll()直接完成全局替换(哪怕/vp/出现多次也能处理)。 - 第二处替换:先用
sizeMatcher.find()判断URL里有没有目标字符串,只有存在的时候才执行替换,避免对不符合条件的URL做无效操作。
其实用字符串的replace()方法也能实现,但既然你明确要求用Matcher和Pattern,上面的代码完全符合你的需求~
内容的提问来源于stack exchange,提问作者YASSBRA Top10
相关产品推荐
相关产品推荐

