在某个字符的最后一次出现时拆分字符串

新手上路,请多包涵

我基本上是想在最后一个句点上拆分一个字符串以捕获文件扩展名。但 有时 文件没有 任何 扩展名,所以我很期待。

但问题是有些文件名在结尾之前有句点,就像这样……

 /mnt/sdcard/OG Ron C, Chopstars & Drake - Choppin Ain't The Same-2013-MIXFIEND/02 Drake - Connect (Feat. Fat Pat) (Chopped Not Slopped).mp3

因此,当该字符串出现时,它会在“02 Drake - Connect(Feat)”处将其切碎。

这是我一直在用的…

 String filePath = intent.getStringExtra(ARG_FILE_PATH);
String fileType = filePath.substring(filePath.length() - 4);
String FileExt = null;
try {
    StringTokenizer tokens = new StringTokenizer(filePath, ".");
    String first = tokens.nextToken();
    FileExt = tokens.nextToken();
}
catch(NoSuchElementException e) {
    customToast("the scene you chose, has no extension :(");
}
System.out.println("EXT " + FileExt);
File fileToUpload = new File(filePath);

如何在文件扩展名处拆分字符串,但也能够在文件没有扩展名时处理和发出警报。

原文由 sirvon 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 382
2 个回答

假设以点结尾后跟字母数字字符的文件具有扩展名可能更容易。

 int p=filePath.lastIndexOf(".");
String e=filePath.substring(p+1);
if( p==-1 || !e.matches("\\w+") ){/* file has no extension */}
else{ /* file has extension e */ }

请参阅 Java 文档 了解正则表达式模式。请记住转义反斜杠,因为模式字符串需要反斜杠。

原文由 user1537366 发布,翻译遵循 CC BY-SA 3.0 许可协议

你可以试试这个

int i = s.lastIndexOf(c);
String[] a =  {s.substring(0, i), s.substring(i)};

原文由 Evgeniy Dorofeev 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题