这不是花哨的,但有时简单直接很好。我已经为你一步一步地解决了这个问题。
public static void main(String[] args) {
String parseMe = "/wps/wcm/connect/ae539d07-ce65-434e-9d9e-9e4ade8d4aa1/Extra+Talk+Time+Voucher_29_may.xls?MOD=AJPERES&CACHEID=ae539d07-ce65-434e-9d9e-9e4ade8d4aa1";
String[] questionMarkTokens = parseMe.split("\\?");
String beforeQuestionMark = questionMarkTokens[0];
String[] slashTokens = beforeQuestionMark.split("/");
String afterLastSlashBeforeQuestionMark = slashTokens[slashTokens.length - 1];
System.out.println(afterLastSlashBeforeQuestionMark);
}
\\?
正在照顾java中更神秘的问题之一。 Split需要一个正则表达式。正则表达式对于?
有特殊的含义。所以如果你想把它作为一个字面问号,你必须用斜杠来逃避它。但是,当解析字符串时,它也使用反斜杠作为转义字符。所以你必须用另一个斜线来逃避斜线才能看到前一个斜线。
这就是说,米沙可能是对的。有很多方法可以打破解析。如果你可以使用罐装做的话。仍然很高兴学会如何自己做。
我发现,有多个正确答案here.cheers – Raj