如何在Java之前获取字符串。(点)和/之后/(最后)斜杠?

时间:2014-05-09 06:21:23

标签: java

我有一个这样的字符串:

"core/pages/viewemployee.jsff"

从这段代码中,我需要获得“viewemployee”。我如何使用Java获得此功能?

5 个答案:

答案 0 :(得分:19)

您可以使用正则表达式解决此问题(假设您只需要在最后一个“/”和“。”之间使用一组单词字符):

    String str="core/pages/viewemployee.jsff";
    str=str.replaceFirst(".*/(\\w+).*","$1");
    System.out.println(str); //prints viewemployee

答案 1 :(得分:19)

假设您将该字符串保存在名为myString的变量中。

String myString = "core/pages/viewemployee.jsff";
String newString = myString.substring(myString.lastIndexOf("/")+1, myString.indexOf("."));      

但是你需要在这个substring之前做同样的控制,因为如果你没有从lastIndexOf()indexOf()获得这些字符,那么#&# 34; -1"这将破坏您的substring调用。

我建议您查找Javadoc documentation

答案 2 :(得分:8)

您可以先使用" /"分割字符串。这样你就可以让每个文件夹和文件名分开。对于这个例子,你将拥有"核心","页面"和" viewemployee.jsff"。我假设您需要没有扩展名的文件名,因此只需使用"。"分隔符到最后一个标记。你将有没有扩展名的文件名。

String myStr = "core/pages/viewemployee.bak.jsff";

String[] tokens = myStr.split("/");
String[] fileNameTokens = tokens[tokens.length - 1].split("\\.");

String fileNameStr = "";

for(int i = 0; i < fileNameTokens.length - 1; i++) {
    fileNameStr += fileNameTokens[i] + ".";
}

fileNameStr = fileNameStr.substring(0, fileNameStr.length() - 1);

System.out.print(fileNameStr) //--> "viewemployee.bak"

答案 3 :(得分:8)

这些是文件路径,对吧?考虑使用File.getName(),特别是如果您已经拥有File对象:

File file = new File("core/pages/viewemployee.jsff");
String name = file.getName(); // --> "viewemployee.jsff"

并删除扩展程序:

String res = name.split("\\.[^\\.]*$")[0]; // --> "viewemployee"

有了这个,我们就可以处理像"../viewemployee.2.jsff"这样的字符串。

正则表达式匹配最后一个点,零个或多个非点,以及字符串的结尾。然后String.split()将这些视为分隔符,并忽略它们。除非原始字符串是.,否则数组将始终具有一个元素。

答案 4 :(得分:6)

下面会给你 viewemployee.jsff

int idx = fileName.replaceAll("\\", "/").lastIndexOf("/");
String fileNameWithExtn =  idx >= 0 ? fileName.substring(idx + 1) : fileName;

删除文件Extension并仅获取 viewemployee ,类似地

idx = fileNameWithExtn .lastIndexOf(".");
String filename = idx >= 0 ? fileNameWithExtn.substring(0,idx) : fileNameWithExtn ;