0

我对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”,因此包含它并不重要。

我该怎么做?如果可能的话,您能否评论代码以便我了解发生了什么?

4

3 回答 3

3

使用可以访问各个元素的 JavaURI类。

URI uri = new URI("http://example.com/filename02563.zip");
String filename = uri.getPath();

当然,如果资源不再位于根路径中,这将需要更多的工作。

于 2012-07-26T14:58:19.587 回答
2

您可以使用 String 类中的lastIndexOf()substring()方法来提取字符串的特定部分:

String url      = "http://example.com/filename02563.zip";
String filename = url.substring(url.lastIndexOf("/") + 1); //+1 skips ahead of the '/'
于 2012-07-26T14:58:57.100 回答
0

You have answers for your first question so this is for second one. Normally I would use some XML parser but your example is not valid XML file so this will be solved with regex (as you wanted).

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());

output:

someJarFile0456799.jar
于 2012-07-26T15:08:09.497 回答