2015-06-24 131 views
0

我正在写一个文件浏览器程序,显示文件目录路径,而用户浏览文件夹/文件之间。Java: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()); 
} 

我需要一台符合其他适当问题灵活的解决方案 任何帮助表示赞赏!

+0

简单地检查这个词有前后性格 – marko5049

+2

后面输入一个空格,你可以只使用'的indexOf(“>” + mTreeLevel +“>”)+ 2'? – gareththegeek

回答

1

更好的方法是使用StringList s。

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

谢谢,好想法! – blueware

1

搜索“C”中第一次出现:

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

然后加1至帐户获得的'C'指数(假设你搜索发现字符串)。

如果你只是想删除一个“C”字:

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

编辑:

如果寻找" C "仍可能会返回错误的发生,搜索" > C > "代替。

+0

假设我有这个字符串''Files> Cold C Storage> C> Capital“'那么'C'会出错! – blueware

+0

@blueware您可以搜索“> C>”。 – Eran