Java:IndexOf(字符串)返回错误字符

Java:IndexOf(字符串)返回错误字符,java,string,stringbuilder,indexof,Java,String,Stringbuilder,Indexof,我正在编写一个文件浏览器程序,当用户在文件夹/文件之间导航时显示文件目录路径 我有以下字符串作为文件路径: "Files > Cold Storage > C > Capital" 我正在使用JavaindexOf(String)方法返回'C'字符在>C>之间的索引,但它会返回这个单词中第一个出现的Cold 我需要单独获取设置在>C>之间的'C'。 这是我的代码: StringBuilder mDirectoryPath = new StringBuilder("Files

我正在编写一个文件浏览器程序,当用户在文件夹/文件之间导航时显示文件目录路径

我有以下字符串作为文件路径:

"Files > Cold Storage > C > Capital"
我正在使用Java
indexOf(String)
方法返回
'C'
字符在
>C>
之间的索引,但它会返回这个单词中第一个出现的
Cold

我需要单独获取设置在
>C>
之间的
'C'
。 这是我的代码:

StringBuilder mDirectoryPath = new StringBuilder("Files > Cold Storage > C > Capital");
String mTreeLevel = "C";
int i = mDirectoryPath.indexOf(mTreeLevel);
if (i != -1) {
    mDirectoryPath.delete(i, i + mTreeLevel.length());
}
我需要适合其他适当问题的灵活解决方案
感谢您的帮助

搜索“C”的首次出现:

然后将1添加到account以获取
'C'
的索引(假设找到了您搜索的字符串)

如果只想删除单个“C”字符:

if (i >= 0) {
    mDirectoryPath.delete(i + 1, i + 2);
}
编辑:


如果搜索
“C”
仍可能返回错误的结果,请改为搜索

更好的方法是使用
字符串的
列表

public void test() {
    List<String> directoryPath = Arrays.asList("Files", "Cold Storage", "C", "Capital");
    int cDepth = directoryPath.indexOf("C");
    System.out.println("cDepth = " + cDepth);
}
公共无效测试(){
List directoryPath=Arrays.asList(“文件”、“冷库”、“C”、“大写”);
int cDepth=directoryPath.indexOf(“C”);
System.out.println(“cDepth=“+cDepth”);
}

只需检查单词在字符前后是否有空格,您是否可以使用
indexOf(“>”+mTreeLevel+“>”)+2
?假设我有这个字符串
“Files>Cold C Storage>C>Capital”
那么它将错误地出现“C”@blueware您可以改为搜索“>C>”。
public void test() {
    List<String> directoryPath = Arrays.asList("Files", "Cold Storage", "C", "Capital");
    int cDepth = directoryPath.indexOf("C");
    System.out.println("cDepth = " + cDepth);
}