Java 解析路径以获取所需名称
我试图解析项目或项目包的给定路径,以便从中构造有用的名称 我一直在玩弄正则表达式,但我遇到了麻烦 我想要的示例(Java 解析路径以获取所需名称,java,regex,string,parsing,Java,Regex,String,Parsing,我试图解析项目或项目包的给定路径,以便从中构造有用的名称 我一直在玩弄正则表达式,但我遇到了麻烦 我想要的示例(提供的字符串=>所需字符串): 到目前为止,我已经 path.toString().substring(path.toString().indexOf("bin")+4) .replace('/', '.').replace('\\', '.');` 它可以让所有东西都通过bin,但不知道如何做其他事情…您可以使用/([^/]*)/bin/?(*)?替
提供的字符串
=>所需字符串
):
到目前为止,我已经
path.toString().substring(path.toString().indexOf("bin")+4)
.replace('/', '.').replace('\\', '.');`
它可以让所有东西都通过bin,但不知道如何做其他事情…您可以使用/([^/]*)/bin/?(*)
?替换为反向参考1和2,如下所示:
如果2不匹配,则需要去掉尾随。(或者测试2并加入ux)我没有可用的Java编译器,但您可以尝试以下伪ish代码:
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();
String[]分隔符={”/“,“\\”};
String[]tokens=path.Split(分隔符);
StringBuilder结果=新建StringBuilder();
for(int i=0;i0))
{
追加(标记[i-1]);
for(int j=i+1;j
请将令牌[i].toLower()==“bin”
更改为令牌[i].toLower().equals(“bin”)
。我不喜欢将字符串与=
进行比较,即使是在伪代码中。谢谢:)打得好!安全总比抱歉好。我对java一无所知,但在/
正斜杠上拆分字符串并删除索引0、1、2和4或选择索引3和5不是同样容易吗
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();