我正在尝试获取此字符串的“工作”部分:
String test = "\prod\mp\incoming\users\work\test.java";
我一直试图这样做:
String result = test.substring(test.lastIndexOf("\\")+1 , test.length());
但这是返回“test.java”
答案 0 :(得分:4)
尝试:
String test = "\\prod\\mp\\incoming\\users\\work\\test.java";
String[] s = test.split("\\");
result = s[s.length-2];
以下是split method签名:
public String[] split(String regex);
它将此字符串拆分为给定正则表达式的匹配项,并返回包含匹配项的String数组。在您的情况下,您需要获得倒数第二个匹配,这是与索引s.length-2
的匹配,因为数组s
中的最后一个元素具有索引s.length-1
答案 1 :(得分:1)
将你的单行打破成明智的部分。而不是......
String result = test.substring(test.lastIndexOf("\\") + 1 , test.length());
...试试这个......
int lastSlashIndex = test.lastIndexOf("\\");
int endIndex = test.length();
String result = test.substring(lastSlashIndex + 1, endIndex);
然后很明显,你的子字符串从最后一个斜杠变为字符串的结尾。那么你如何解决它?首先,您需要正确描述问题。你有两件事可能会做,我不知道哪个是正确的:
我将解决第一个问题,如果事实证明是第二个问题,那么你应该能够按照自己的意愿完成并自己完成。
// Get the fifth item in the path
String[] items = test.split("\\");
String result = items[4];
添加一些错误检查以防止数组索引超出范围异常。
String[] items = test.split("\\");
String result = "";
if (items.length > 4)
result = items[4];