假设我有字符串
String path = "the/quick/brown/fox/jumped/over/the/lazy/dog/";
我想要以下输出
String output = "the/quick/brown/fox/jumped/over/the/lazy/";
我本以为下面的事情会做
output = path.substring(0, path.lastIndexOf("/", 1));
考虑到医生怎么说
返回指定字符的第一个(最后)出现的索引,从指定的索引向前(向后)搜索。
但这似乎不起作用。
任何帮助将不胜感激。
答案 0 :(得分:3)
首先,lastIndexOf
将返回索引,而不是字符串。它还从指定的索引1
向后搜索向后,因此它只会查看之前的所有内容,并包括索引1处的字符。这意味着它仅检查t
和h
。预期它什么也找不到,并返回-1。
如果要搜索整个字符串,则应该省略第二个参数。
此外,要获得所需的输出字符串(假设您要删除最后一个路径组件?),可以将replaceAll
与正则表达式一起使用:
String output = path.replaceAll("[^/]+/$", "");
答案 1 :(得分:2)
在path
长度> 2的情况下,此方法有效
final String path = "the/quick/brown/fox/jumped/over/the/lazy/dog/";
final int secondLast = path.length()-2;
final String output = path.substring(0, path.lastIndexOf("/",secondLast)+1);
System.out.println(output);
答案 2 :(得分:1)
答案 3 :(得分:1)
使用Apache Commons IO
String output = org.apache.commons.io.FilenameUtils.getPath(path);
不使用Apache
public static String removeLastPart(String str) {
int pos = str.length() - 1;
while (str.charAt(pos) != '/' || pos + 1 == str.length()) {
pos--;
}
return str.substring(0, pos + 1);
}
答案 4 :(得分:1)
似乎每个答案都假设您已经知道输入字符串以及其中最后一次出现:success="!!enquiryForm.preferences && !$v.enquiryForm.preferences.$invalid"
:success-messages="(!!enquiryForm.preferences && !$v.enquiryForm.preferences.$invalid) ? 'Ok' : ''"
的确切位置,而通常情况并非如此...
这是更通用的方法,用于获取字符串中字符的倒数第二个(倒数第二个,倒数第三个等)
"/"
用法:
static int nthLastIndexOf(int nth, String ch, String string) {
if (nth <= 0) return string.length();
return nthLastIndexOf(--nth, ch, string.substring(0, string.lastIndexOf(ch)));
}
输出:
快速/棕色/狐狸/跳跃/翻越/懒惰/
/快速/棕色/狐狸/跳/过去/的/
/快速/棕色/
/ quick / brown / fox / jumped / over / the / lazy
答案 5 :(得分:1)
如果要处理路径和文件,为什么不使用内置类?在我看来,以下内容比字符串操作更容易:
Path path = Paths.get("the/quick/brown/fox/jumped/over/the/lazy/dog/");
System.out.println(path.getParent());
// prints: the\quick\brown\fox\jumped\over\the\lazy
System.out.println(path.getParent().getParent());
// prints: the\quick\brown\fox\jumped\over\the
答案 6 :(得分:1)
例如, 字符串键=“ aaa / bbb / ccc / ddd”;
,我需要我的结果字符串为“ ccc / ddd”。这是“ /”倒数第二个索引的子字符串,以下代码有助于::
$('#productList tbody').on( 'click', 'button', function () {
// var data = table.row( $(this).parents('tr') ).data();
alert( "Product is added!" );
} );
密钥的最终值为“ ccc / ddd”。
答案 7 :(得分:0)
这是一个用例:
String url = "http://localhost:4000/app/getPTVars";
int secondLastIndexOf = url.substring(0, url.lastIndexOf('/')).lastIndexOf('/');
System.out.println(secondLastIndexOf);
System.out.println(url.substring(secondLastIndexOf, url.length()));
和输出:
21
/app/getPTVars
答案 8 :(得分:0)
尝试 - 1
方法:
int j = path.lastIndexOf("/");
int i = path.lastIndexOf("/", j - 1); // the 2nd last index from the last index
String output = path.substring(0, i + 1); // inclusive