Java:返回错误字符的IndexOf(String string)

时间:2015-06-24 09:26:35

标签: java string stringbuilder indexof

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

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

"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());
}

我需要灵活的解决方案,以适应其他适当的问题 任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

搜索第一次出现" C" :

String mTreeLevel = " C ";
int i = mDirectoryPath.indexOf(mTreeLevel);

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

如果你只想删除单个' C'性格:

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

编辑:

如果搜索" C "可能仍会返回错误的搜索结果,请搜索" > C > "

答案 1 :(得分:1)

更好的方法是使用List String s。

public void test() {
    List<String> directoryPath = Arrays.asList("Files", "Cold Storage", "C", "Capital");
    int cDepth = directoryPath.indexOf("C");
    System.out.println("cDepth = " + cDepth);
}