从绝对路径获取名称,在Java Android中截取最后一个斜杠后的子字符串

19
我想提取绝对路径的名称。如果我有一个值为 /mnt/sdcard/Videos/Videoname 的字符串,我想保存一个值为 Videoname 的字符串。
该字符串正在更改,我无法预先获取斜杠数量。如何从最后一个斜杠拆分子字符串?

/mnt/sdcard/Videos/Videoname --> Videoname


1
字符串 name = "/mnt/sdcard/Videos/Videoname"; 字符串 newName = name.substring(name.lastIndexOf("/")+1, name.length()); - Tomislav Novoselec
请点击以下链接查看一个类似于您问题的已解答问题:https://dev59.com/BG855IYBdhLWcg3w_5cQ - Anga
6个回答

25
你应该使用 File API。引用自File.getName()文档:

返回此抽象路径名表示的文件或目录的名称。这只是路径名名称序列中的最后一个名称。如果路径名的名称序列为空,则返回空字符串。

例如:

String name = new File("/mnt/sdcard/Videos/Videoname").getName();

16

如果您从“File”对象中获取了它,则可以使用该方法获取:

String fileName = myFile.getName();

如果你是从一个简单的字符串中获取到它,你可以使用以下方法:

String fileName = myString.substring(myString.lastIndexOf("/")+1);

2
字符串版本是错误的,"/mnt/sdcard/Videos/Videoname"将返回"/Videoname"。像我建议的那样使用File API,例如: new File("/mnt/sdcard/Videos/Videoname").getName(),这将返回正确的"Videoname" - dacwe
1
你说得对,我忘记在索引中加上+1了... 但是,“文件”版本肯定更好看 ;) - Jeje Doudou

7
String path = "/mnt/sdcard/Videos/Videoname"; // Your path

String fileName = new File(path).getName(); // you file name

2
最简单的方法是
String path ="AnyDirectory/subFolder/last.htm";
int pos = path.lastIndexOf("/") + 1;

path.substring(pos, path.length()-pos);

现在您的路径字符串中已经有了last.htm。

1
但是经过更多的研究,以下代码可以正常工作...
String[] Tokens = stringPath.split("\\\\");

你需要两次转义 "\"。


实际上,这个问题是关于正斜杠“/”而不是反斜杠“\” 的。 - LarsH

0
string a = "/foo/bar/target";
string words = a.Split("/")
string target = words[words.length-1]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接