Java 如何从字符串变量中提取特定字符串

Java 如何从字符串变量中提取特定字符串,java,string,Java,String,我得到一个字符串,其中包含文件名以及ex的扩展名,如下所示 String s = "abcdf.dat";// Now as shown file abcde having a .dat extension 现在我只想将文件名存储在另一个字符串中,而不是扩展名,所以我想以这种格式存储 比如- String p= "abcdf"; //only file name please advise how to achieve this 您可以使用split(stringregex)获取名称

我得到一个字符串,其中包含文件名以及ex的扩展名,如下所示

 String s = "abcdf.dat";// Now as shown file abcde having a .dat extension 
现在我只想将文件名存储在另一个字符串中,而不是扩展名,所以我想以这种格式存储 比如-

 String p= "abcdf"; //only file name please advise how to achieve this
您可以使用
split(stringregex)
获取名称

String fileName = "abcdf.dat";
String name = fileName.split("\\.")[0]; // abcdf
String ext = fileName.split("\\.")[1]; // dat
注意:
“\\”
是一个正则表达式。

使用方法

是一个元字符,因此在拆分之前需要对其进行转义。

您可以使用-

String s = "abcdf.dat";

String start = StringUtils.substringBefore(s, "."); // returns "abcdf"
String filename = s.substring(0, s.lastIndexOf("."));
由于文件名可以包含多个点(.),所以直到最后一个点 将是文件名

试试这个

 String fileName = "abcdf.dat";

 String name = fileName.split(java.util.regex.Pattern.quote("."))[0];
 String ext = fileName.split(java.util.regex.Pattern.quote("."))[1];

这段代码甚至不会编译(除非
abcdf
是一个类的对象,该类有一个名为
dat
)的公共字段。重复的@dasblinkenlight OP可能会忘记写入
String s=“abcdf.dat”
这不起作用,因为必须对
进行转义。如果文件名有多个点,比如
一些.file.doc
?那么“filename.tar.gz”呢?@bsd这些(.tar.gz或.9.png等)都是例外情况,你可以用实际的方法进行检查。@TarunDroid我们不能涵盖所有方面。我们给出一些提示,帮助解决一些逻辑错误等。。
String p = s.substring(0, s.lastIndexOf("."));
 String fileName = "abcdf.dat";

 String name = fileName.split(java.util.regex.Pattern.quote("."))[0];
 String ext = fileName.split(java.util.regex.Pattern.quote("."))[1];