我有一个永不改变的链接。唯一改变的是文件名(粗体)。所以如何从这个链接获取文件名?我想在一个TextView显示此或toast-如何提取字符串的特定部分?
http://apkins.aptoide.com/
aptoide-8.1.0.1.apk?=x
我有一个永不改变的链接。唯一改变的是文件名(粗体)。所以如何从这个链接获取文件名?我想在一个TextView显示此或toast-如何提取字符串的特定部分?
http://apkins.aptoide.com/
aptoide-8.1.0.1.apk?=x
String given = "http://apkins.aptoide.com/aptoide-8.1.0.1.apk?=x";
String extractedAppName = given.substring(given.lastIndexOf("/") + 1, given.lastIndexOf("?"));
这应该工作。它需要在名称前面的/
的位置,然后是?
的位置。它需要这两个字符之间的字符串(子字符串)。试试看,你会看到。
这应该做的伎俩
String fileName = url.substring(url.lastIndexOf('/') + 1);
您也可以尝试URLUtil.guessFileName(url, null, null)
编辑1
String url = "any url"
这里是一个正则表达式少的解决方案:
public static String getFileName(String link) {
int endIndex = link.lastIndexOf('?');
return link.substring(26, endIndex);
}
这很简单。它首先得到文件名结尾的位置,即最后一个“?”的位置。然后它从第27个字符开始到文件名结尾“从链接中删除”一个新字符串。
和我的答案一样。 – creativecreatorormaybenot
@creativecreatorormaybenot如果文件名包含“?”,则不会工作。因为你使用'indexOf'而不是'lastIndexOf'。 – Sweeper
这可能会失败,因为正如我所提到的,我的链接不断变化,字符的长度和数量 –
我已经发布了类似的答案...为什么不只是评论? – creativecreatorormaybenot
正忙着打字。没有看到你的。对不起,我没有足够的代表来评论 – slyidiot
URLUtil.guessFileName(url,null,null)听起来有趣 –