我是java的新手,我正在尝试获取字符串的一部分:
说我有一个URL,我想要一个特定的部分,例如文件名:
String url = "http://example.com/filename02563.zip";
每次都会随机生成02563,现在它总是长5个字符。 我想让java找到“m /”(从.com /)到行尾的内容,以获取文件名。
现在考虑这个例子:
假设我有一个html文件,我希望从中提取一个代码段。以下是提取的示例:
<applet name=someApplet id=game width="100%" height="100%" archive=someJarFile0456799.jar code=classInsideAJarFile.class mayscript>
我想提取jar文件名,所以我希望得到“ve =”和“.jar”之间的文本。扩展名将始终为“.jar”,因此包含此内容并不重要。
我该怎么做?如果可能的话,您能否对代码进行评论,以便了解发生了什么?
答案 0 :(得分:3)
使用Java URI
class,您可以访问各个元素。
URI uri = new URI("http://example.com/filename02563.zip");
String filename = uri.getPath();
当然,如果资源不再位于根路径中,则需要更多工作。
答案 1 :(得分:2)
您可以使用String类中的lastIndexOf()
和substring()
方法提取字符串的特定部分:
String url = "http://example.com/filename02563.zip";
String filename = url.substring(url.lastIndexOf("/") + 1); //+1 skips ahead of the '/'
答案 2 :(得分:0)
你有第一个问题的答案,所以这是第二个问题。通常我会使用一些XML解析器,但你的例子不是有效的XML文件所以这将用正则表达式解决(如你所愿)。
String url = "<applet name=someApplet id=game width=\"100%\" height=\"100%\" archive=someJarFile0456799.jar code=classInsideAJarFile.class mayscript>";
Pattern pattern= Pattern.compile("(?<=archive=).*?(?= )");
Matcher m=pattern.matcher(url);
if(m.find())
System.out.println(m.group());
输出:
someJarFile0456799.jar