我想知道文件是否只使用REGEX扩展。实施例
Goodbye.mp4(ok)
Free.xlsx(ok)
GettingStarted(NO)
File.81723.domain.8080.pdf(ok)
我如何在Android中执行此操作?
我试过这个但是没有工作
if(!fileName.matches("(\\.[^\\\\]+)$"))
答案 0 :(得分:2)
您需要在开头使用.*
,因为matches
需要完整的字符串匹配,否定的字符类应该是[^.]
来匹配任何字符,但文字{{1} }}
使用
.
请参阅regex demo
if(!fileName.matches(".*\\.[^.]+")) ....
答案 1 :(得分:0)
@CommonsWare告诉我解决方案,它是:
favorites set<text>
然后你得到:
String[] tokens = fileName.split("\\.(?=[^\\.]+$)");
收率:
"test.cool.awesome.txt".split("\\.(?=[^\\.]+$)");
答案 2 :(得分:0)
System.out.println("yourFileName.txt".split("\\.(?=[^\\.]+$)").length >1 ? "OK":"NO");
其中,yourFileName.txt:您的文件名。
split(&#34; \。(?= [^ \。] + $)&#34;):从最后一个点拆分文件名。
如果数组大小大于1,则它具有扩展名,否则不具有。
答案 3 :(得分:0)
对于像检测字符串中是否有点这样简单的事情,您不必使用正则表达式。 String
API提供了lastIndexOf(int)
方法:
lastIndexOf(int ch)
返回指定字符最后一次出现的字符串中的索引。
如果您查看方法文档,您会注意到:
(...)如果此字符串中没有出现此类字符,则返回-1。 从最后一个字符开始向后搜索字符串。
基本上,您所要做的就是检查此方法是否返回大于-1
的值,并且它不是最后一个字符。例如:
public static boolean hasExtension(final String fileName) {
final int indexOfDot = fileName.indexOf('.');
// Checking if dot index is greater than 0 - omitting
// names without dot or starting with a dot.
return indexOfDot > 0 && indexOfDot < fileName.length() - 1;
}
public static String getExtension(final String fileName) {
return hasExtension(fileName) ?
// +1 in substring to strip the dot.
fileName.substring(fileName.lastIndexOf('.') + 1)
// Returning empty string if no extension.
: "";
}
"file.pdf"
将报告为具有附加信息并返回pdf
。 "file"
,".file"
和"file."
将报告为无扩展名。