解析路径以获得所需名称

时间:2013-12-05 19:08:14

标签: java regex string parsing

我正在尝试解析项目中的给定路径或项目中的包,以便我可以从中构造一个有用的名称。

我一直在玩正则表达式,但我遇到了麻烦。

我想要的示例(supplied string => desired one):

"C:/Users/IDPWorkspace/moneyTestProject/bin"  => moneyTestProject
"C:/Users/IDPWorkspace/moneyTestProject/bin/moneyScenario" => moneyTestProject_moneyScenario

到目前为止我已经

path.toString().substring(path.toString().indexOf("bin")+4)
               .replace('/', '.').replace('\\', '.');` 

这样可以很好地将所有东西都放到垃圾箱里,但不知道怎么做其他的东西......

2 个答案:

答案 0 :(得分:1)

我没有可用的Java编译器,但你可以试试这个伪代码:

String[] delimiters = {"/", "\\"};
String[] tokens = path.Split(delimiters);

StringBuilder result = new StringBuilder();

for(int i = 0; i < tokens.Length; i++)
{
    if(tokens[i].toLower().equals("bin") && (i > 0))
    {
        result.append(tokens[i-1]);
        for(int j = i+1; j < tokens.Length; j++)
        {
            result.append("_" + tokens[j]);
        }
        break;
    }
}

String finalPath = result.toString();

答案 1 :(得分:0)

你能使用/([^/]*)/bin/?(.*)吗?替换为反向引用1和2,如下所示:

http://regex101.com/r/cZ4lM3

如果2不匹配,则需要删除尾部_。 (或者测试2并加入_)