提取String的特定部分

时间:2015-03-25 14:09:10

标签: java substring indexof

我正在尝试获取此字符串的“工作”部分:

 String test = "\prod\mp\incoming\users\work\test.java";

我一直试图这样做:

  String result = test.substring(test.lastIndexOf("\\")+1 , test.length());

但这是返回“test.java”

2 个答案:

答案 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];