我有一个这样的字符串:
"core/pages/viewemployee.jsff"
从这段代码中,我需要得到“viewemployee”。我如何使用Java得到它?
rqenqsqc1#
假设您将该字符串保存在一个名为myString的变量中。
myString
String myString = "core/pages/viewemployee.jsff"; String newString = myString.substring(myString.lastIndexOf("/")+1, myString.indexOf("."));
但是在执行substring之前,您需要创建相同的控件,因为如果没有这些字符,您将从lastIndexOf()或indexOf()获得“-1”,并且它将中断您的substring调用。我建议寻找the Javadoc documentation。
substring
lastIndexOf()
indexOf()
cgvd09ve2#
你可以用正则表达式来解决这个问题(假设你只需要最后一个“/”和“.”之间的一组单词字符):
String str="core/pages/viewemployee.jsff"; str=str.replaceFirst(".*/(\\w+).*","$1"); System.out.println(str); //prints viewemployee
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"
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()将这些元素视为分隔符,并忽略它们。数组将始终包含一个元素,除非原始字符串为.。
"../viewemployee.2.jsff"
.
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;
5条答案
按热度按时间rqenqsqc1#
假设您将该字符串保存在一个名为
myString
的变量中。但是在执行
substring
之前,您需要创建相同的控件,因为如果没有这些字符,您将从lastIndexOf()
或indexOf()
获得“-1”,并且它将中断您的substring
调用。我建议寻找the Javadoc documentation。
cgvd09ve2#
你可以用正则表达式来解决这个问题(假设你只需要最后一个“/”和“.”之间的一组单词字符):
w6lpcovy3#
你可以先用“/”分割字符串,这样你就可以把每个文件夹和文件名分开。在这个例子中,你会有“core”,“pages”和“viewemployee.jsff”。我假设你需要的是没有扩展名的文件名,所以只要对最后一个令牌应用相同的分割操作,用“.”分隔符。你会得到没有扩展名的文件名。
rsaldnfx4#
这些是文件路径。请考虑使用File.getName(),尤其是在已经有File对象的情况下:
要删除扩展名:
这样我们就可以处理像
"../viewemployee.2.jsff"
这样的字符串。正则表达式匹配字符串的最后一个点、零个或多个非点以及字符串的末尾。然后String.split()将这些元素视为分隔符,并忽略它们。数组将始终包含一个元素,除非原始字符串为
.
。xsuvu9jc5#
以下内容将为您提供viewemployee.jsff:
要删除文件扩展名并仅获得viewemployee,类似地: