需要修剪Java字符串

3

我需要帮忙截取一个字符串url。

假设这个字符串是 http://myurl.com/users/232222232/pageid

我想要返回的是 /232222232/pageid

现在 'myurl.com' 可能会改变,但 /users/ 会始终保持不变。

5个回答

4
我建议您使用substringindexOf("/users/")方法。
String url = "http://myurl.com/users/232222232/pageid";
String lastPart = url.substring(url.indexOf("/users/") + 6);

System.out.println(lastPart);     // prints "/232222232/pageid"

稍微复杂一点的变体是让 URL 类帮你解析 URL:
URL url = new URL("http://myurl.com/users/232222232/pageid");
String lastPart = url.getPath().substring(6);

System.out.println(lastPart);     // prints "/232222232/pageid"

另外一种方法是使用正则表达式来实现,可以按照以下步骤进行操作:
String url = "http://myurl.com/users/232222232/pageid";
String lastPart = url.replaceAll(".*/users", "");

System.out.println(lastPart);     // prints "/232222232/pageid"

这个很棒,因为它只是从字符串的开头截取。 - user979587

1
string.replaceAll(".*/users(/.*/.*)", "$1");

2
第二个 /.* 是不必要的。此外,为什么要使用捕获组呢?请参见我的回答 :-) - aioobe
是的,这并非必需,但我认为捕获组在了解你得到什么方面更易于理解。 - Garrett Hall

1
你可以使用split(String regex,int limit)方法,它会将字符串按照regex模式最多分割limit次,因此...
String url="http://myurl.com/users/232222232/pageid";
String[] parts=url.split("/users",1);
//parts={"http://myurl.com","/232222232/pageid"}
String rest=parts[1];
//rest="/232222232/pageid"

限制是为了防止像 "http://myurl.com/users/232222232/users/pageid" 这样的字符串给出像 "/232222232" 这样的答案。

我会给那个split函数添加一个限制参数(1)。 - aioobe

1
String rest = url.substring(url.indexOf("/users/") + 6);

OP想要保留/users/中的最后一个斜杠。 - Xavi López

0
你可以使用 String.indexOf()String.substring() 来实现这个功能:
String pattern = "/users/";
String url = "http://myurl.com/users/232222232/pageid";
System.out.println(url.substring(url.indexOf(pattern)+pattern.length()-1);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接