最直接方式是用lastIndexOf('/')定位最后一个斜杠,再用substring(lastSlash + 1)提取其后子串;需判断lastSlash != -1以防异常,且注意末尾为/时返回空字符串。

要从 URL 中精确提取最后一个路径参数(比如 https://example.com/api/v1/users/123 中的 123),关键是定位最后一个 / 的位置,再取其后的子串。`String.substring()` 配合 `lastIndexOf('/')` 是最直接、高效的方式。
先找最后一个斜杠的位置
`lastIndexOf('/')` 会返回字符串中最后一次出现 `/` 的索引。注意:如果 URL 以 / 结尾(如 https://a.com/path/),结果可能指向末尾,需额外判断避免取空字符串。
- 对
"https://example.com/api/v1/users/123",lastIndexOf('/') == 30 - 对
"https://example.com/api/v1/users/",lastIndexOf('/') == 31(即最后一个字符位置)
用 substring 提取斜杠之后的内容
调用 substring(index + 1) 即可拿到最后一个 `/` 后的所有字符。但必须确保 index != -1(即存在 `/`),否则会抛 StringIndexOutOfBoundsException。
推荐写法:
String url = "https://example.com/api/v1/users/123";
int lastSlash = url.lastIndexOf('/');
String lastParam = (lastSlash != -1 && lastSlash < url.length() - 1)
? url.substring(lastSlash + 1)
: "";处理边界情况更稳妥
实际使用中建议排除末尾斜杠、查询参数和锚点,避免误取 123?x=1 或 123#section 这类内容:
- 先用
url.split("\?")[0].split("#")[0]剥离 query 和 fragment - 再 trim 掉末尾 `/`(如
url.replaceAll("/+$", "")) - 最后执行
lastIndexOf+substring
一句话总结关键逻辑
核心就是:定位最后一个有效 `/`,跳过它,取后面所有非空、非查询/锚点部分的字符。只要注意空 URL、无 `/`、结尾 `/` 这三种情况,就能稳定提取。

















