我有这个字符串:
"http://my/website/collections/index.php?s=1&schema=http:/my/web/fe7cd50991b11f51050902sddaf3e042bd5467/idApp=19"
我想从字符串中提取此标记:fe7cd50991b11f51050902sddaf3e042bd5467
网站可能会有所不同,但唯一的想法是不能改变的是我必须获得的字符串标记始终位于“/ idApp =”的左侧
哪种解决方法最有效?
感谢。
答案 0 :(得分:3)
String url = "http://my/website/collections/index.php?s=1&schema=http:/my/web/fe7cd50991b11f51050902sddaf3e042bd5467/idApp=19";
String[] tokens = url.split("/");
String searched = tokens[array.length - 2];
如果令牌是每次prelast时,这将有效。否则,您需要浏览Array
并检查当前令牌是否符合您的条件并在之前获取令牌。
在代码中:
int tokenId = 0;
for (int i = 0; i < tokens.length; i++) {
if (token[i].equals("/idApp=")) {
tokenId = i - 1;
break;
}
}
String rightToken = tokens[tokenId];
答案 1 :(得分:2)
假设令牌只能是数字和字母,你可以使用这样的东西。
它匹配/ idApp = string之前的一系列数字和字母。
作为一种标准的,易于阅读的方式,它是“高效的”,但可能有更高性能的方法来做到这一点,尽管你应该仔细考虑是否真的找到这个字符串是一个表演瓶颈。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestRegexp {
public static void main(String args[]) {
String text = "http://my/website/collections/index.php?s=1&schema=http:/my/web/fe7cd50991b11f51050902sddaf3e042bd5467/idApp=19";
Pattern pattern = Pattern.compile("(\\w+)/idApp=");
Matcher m = pattern.matcher(text);
if (m.find()) {
System.out.println(m.group(1));
}
}
}
答案 2 :(得分:1)
这里你不需要正则表达式。绝对。任务只是削减一根绳子,不要过于复杂。简单是关键。
int appIdPosition = url.lastIndexOf("/idApp=");
int slashBeforePosition = url.lastIndexOf("/", appIdPosition - 1);
String token = url.substring(slashBeforePosition + 1, appIdPosition);
答案 3 :(得分:0)
你可以使用正则表达式
这两个包将帮助您
java.util.regex.Matcher
java.util.regex.Pattern
答案 4 :(得分:0)
简单2次拆分适用于多个参数。首先分为"idApp"
,然后分配在/
。
即使idApp
参数后面有多个参数,以下代码也能正常工作。
String url = "http://my/website/collections/index.php?s=1&schema=http:/my/web/fe7cd50991b11f51050902sddaf3e042bd5467/idApp=19";
String[] tokens = url.split("idApp");
String[] leftPartTokens = tokens[0].split("/");
String searched = leftPartTokens[leftPartTokens.length - 1];
System.out.println(searched);
答案 5 :(得分:0)
使用字符串执行任何操作时,请始终注意:
http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html
这是我的回答......
public static void main(String[] args) {
//Don't forget: import static org.apache.commons.lang.StringUtils.*;
String url2 = "http://my/website/collections/index.php?s=1&schema=http:/my/web/fe7cd50991b11f51050902sddaf3e042bd5467/idApp=19";
String result = substringAfterLast("/", substringBeforeLast(url2,"/")) ;
System.out.println(result);
}