字符串的特定部分

时间:2014-10-30 09:01:45

标签: java string substring

如何获取字符串的特定部分,假设我有一个字符串

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并不总是相同。 如何从该字符串中删除最后一部分

谢谢

5 个答案:

答案 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('.'));