如何获取字符串的特定部分,假设我有一个字符串
file:/C:/Users/uiqbal/Desktop/IFM_WorkingDirectory/SWA_Playground/SWA_Playground.ds
我想只得到
C:/Users/uiqbal/Desktop/IFM_WorkingDirectory/SWA_Playground/
字符串是动态的,所以它并不总是相同我只想从开头删除文件字,最后一部分用.ds扩展名
我试了一下
String resourceURI = configModel.eResource().getURI().toString();
//This line gives: file:/C:/Users/uiqbal/Desktop/IFM_WorkingDirectory/SWA_Playground/SWA_Playground.ds
String sourceFilePath = resourceURI.substring(6, resourceURI.length()-17)
//This line gives C:/Users/uiqbal/Desktop/IFM_WorkingDirectory/SWA_Playground/
此 resourceURI.length() - 17 可能会产生问题,因为SWA_Playground.ds并不总是相同。 如何从该字符串中删除最后一部分
谢谢
答案 0 :(得分:2)
您应该使用File class
String sourceFile = "file:/C:/Users/uiqbal/Desktop/IFM_WorkingDirectory/SWA_Playground/SWA_Playground.ds";
Sring filePath = sourceFile.substring(6);
File f = new File(filePath);
System.out.println(f.getParent());
System.out.println(f.getName());
首先删除file:/
前缀,然后你有一个Windows路径,你可以创建一个文件实例。
然后使用getParent()
方法获取文件夹路径,然后使用getName()
获取文件名。
答案 1 :(得分:0)
你需要一个正则表达式:
resourceURI.replaceAll("^file:/", "").replaceAll("[^/]*$", "")
答案 2 :(得分:0)
像这样:
String sourceFilePath = resourceURI.substring(
resourceURI.indexOf("/") + 1, resourceURI.lastIndexOf('/') + 1);
基本上,创建一个子字符串,其中包含第一个斜杠和最后一个斜杠之间的所有内容。
输出将是:
C:/Users/uiqbal/Desktop/IFM_WorkingDirectory/SWA_Playground/
答案 3 :(得分:0)
您只想删除第一个斜杠之前和最后一个之后的所有内容? 然后这样做:
String resourceURI = configModel.eResource().getURI().toString();
//This line gives: file:/C:/Users/uiqbal/Desktop/IFM_WorkingDirectory/SWA_Playground/SWA_Playground.ds
String[] sourceFilePathArray = ressourceURI.split("/");
String sourceFilePath = "";
for (int i = 1; i < sourceFilePathArray.length - 1; i++)
sourceFilePath = sourceFilePath + sourceFilePathArray[i] + "/";
//sourceFilePath now equals C:/Users/uiqbal/Desktop/IFM_WorkingDirectory/SWA_Playground/
答案 4 :(得分:0)
使用String类中的lastIndexof()方法。
String resourceURI = configModel.eResource().getURI().toString();
String sourceFilePath = resourceURI.substring(6, resourceURI.lastIndexOf('.'));