【问题标题】:Extracting specific parts of a String提取字符串的特定部分
【发布时间】:2015-03-25 14:09:09
【问题描述】:

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

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

我一直在尝试这样做:

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

但这是返回“test.java”

【问题讨论】:

  • 你还没有真正描述你的问题。如果你想得到字符串的工作部分,String result = "work";。容易,对吧?我猜您正在尝试解决一个实际问题,例如 “我想获得路径中的第五个项目。”“我想获得倒数第二个路径中的项目。” 这就是您需要提出的问题。

标签: java substring indexof


【解决方案1】:

尝试:

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);

它围绕给定正则表达式的匹配项拆分此字符串,并返回包含匹配项的字符串数组。在您的情况下,您需要获得倒数第二个匹配项,即与索引 s.length-2 的匹配项,因为数组 s 中的最后一个元素具有索引 s.length-1

【讨论】:

  • 请解释其工作原理,以便其他用户理解。
【解决方案2】:

将您的单行字分解为合理的部分。而不是这个...

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

【讨论】:

    猜你喜欢
    • 2017-11-15
    • 1970-01-01
    • 2017-12-22
    • 2017-07-08
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    相关资源
    最近更新 更多