Java-从右边剪切一个字符串直到指定字符
我有如下字符串,文件路径如下: /Users/Fabian/Desktop/R5X5.mps 我现在只想知道文件名的意思-从右边到“/”的所有内容 在这种情况下:R5X5.mps 最有效的方法是什么Java-从右边剪切一个字符串直到指定字符,java,string,cut,Java,String,Cut,我有如下字符串,文件路径如下: /Users/Fabian/Desktop/R5X5.mps 我现在只想知道文件名的意思-从右边到“/”的所有内容 在这种情况下:R5X5.mps 最有效的方法是什么 这可以用本机java方法解决,还是需要构建正则表达式 使用正则表达式。这很简单: String last = str.replaceAll(".*/", ""); 这个正则表达式表示“所有内容都向上,包括斜杠”,而斜杠被零替换(实际上是“删除”它) 我认为没有人会用“building”这个词来描述
这可以用本机java方法解决,还是需要构建正则表达式 使用正则表达式。这很简单:
String last = str.replaceAll(".*/", "");
这个正则表达式表示“所有内容都向上,包括斜杠”,而斜杠被零替换(实际上是“删除”它)
我认为没有人会用“building”这个词来描述键入“*/”
所需的工作量
我现在只想知道文件名的意思
使用适当的类。例如,Java提供:
String name = new File("/Users/Fabian/Desktop/R5X5.mps").getName();
您也可以使用
String path = "/Users/Fabian/Desktop/R5X5.mps";
String name = path.substring(path.lastIndexOf("/") +1); // "+1" since we don't
// want to include `/` in result
(这基本上就是文件#getName
所做的)在我看来,使用是最好的方式。FilenameUtils
类是的一部分
根据文档,该方法“将处理Unix或Windows格式的文件”。“返回最后一个正斜杠或反斜杠后的文本”作为字符串对象
String filename = "/Users/Fabian/Desktop/R5X5.mps";
String name = FilenameUtils.getName(filename);
System.out.println(name);
上面的代码打印
R5X5.mps
关于s.substring(s.lastIndexOf('/')、s.length())
呢?您是否尝试过任何操作?如果它始终是一个文件路径,则最简单的方法可能是新建文件(您的字符串)
,然后file.getName()
它几乎可以正常工作,然后输出为:/R5X5。mps@ale64bit或者干脆s.substring(s.lastIndexOf('/')+1)
@Andreas绝对!我怎么会错过呢?:)当str.substring(str.lastIndexOf(“/”)+1)
可以做到这一点时,有点过分了。即使字符串中不存在/
也可以工作,与replaceAll()
相同。谢谢,这就是我要找的@安德烈亚斯,为什么这样做太过分了?它的代码比您建议的方法少,并且执行此代码所需的时间不到2微秒。到底是什么问题呢?lastIndexOf
的参数不是一个char
吗?@ale64位不太合适,lastIndexOf
接受两种类型的参数:int
,表示字符的Unicode码点(我们也可以在这里传递char
like'/'
,让编译器将其视为int
)或String
,如本例所示。@ale64位可以是char
(实际上是codepointint
)或String
。两者都可以,但char
在这里更好(更快)@Pshemo mmm,因为Java 8。很高兴知道。@ale64bit“因为Java 8”是什么意思?lastIndexOf(String)
至少从1.4.2()开始就在Java中,我不确定它是否从一开始就在那里(在进一步搜索后,我找到了这篇1.0.2文档)。