如何在Java中获取.(点)之前和/(最后一个)斜杠之后的字符串

evrscar2  于 2022-10-30  发布在  Java
关注(0)|答案(5)|浏览(1684)

我有一个这样的字符串:

"core/pages/viewemployee.jsff"

从这段代码中,我需要得到“viewemployee”。我如何使用Java得到它?

rqenqsqc

rqenqsqc1#

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

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

但是在执行substring之前,您需要创建相同的控件,因为如果没有这些字符,您将从lastIndexOf()indexOf()获得“-1”,并且它将中断您的substring调用。
我建议寻找the Javadoc documentation

cgvd09ve

cgvd09ve2#

你可以用正则表达式来解决这个问题(假设你只需要最后一个“/”和“.”之间的一组单词字符):

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

w6lpcovy3#

你可以先用“/”分割字符串,这样你就可以把每个文件夹和文件名分开。在这个例子中,你会有“core”,“pages”和“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"
rsaldnfx

rsaldnfx4#

这些是文件路径。请考虑使用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()将这些元素视为分隔符,并忽略它们。数组将始终包含一个元素,除非原始字符串为.

xsuvu9jc

xsuvu9jc5#

以下内容将为您提供viewemployee.jsff

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

要删除文件扩展名并仅获得viewemployee,类似地:

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

相关问题