我有一个应该从字符串中提取类别的方法。
它在长字符串中找到category:<something>
的任何地方,它应该能够提取并打印,但我不确定我做错了什么。我的方法似乎准确。但没有任何东西正在印刷。请指教。提前感谢您提供的任何帮助。
字符串:
String str = "We have a large inventory of things in our warehouse falling in "
+ "the category:apperal and the slightly "
+ "more in demand category:makeup along with the category:furniture and ….";
应该提取类别的方法:
public static void printCategories(String string){
int i = 0;
while (true) {
int found = string.indexOf("category", i);
if (found == -1) break;
int start = found + 8; // start of actual category
int end = string.indexOf(":", start);
System.out.println(string.substring(start, end));
i = end + 1; // advance i to start the next iteration
}
}
答案 0 :(得分:3)
这一行的结尾与start相同,因为:恰好位于start的位置:
int end = string.indexOf(":", start);
你想要做的是寻找一个空间,并在过去的类别中再开一个角色:
int i = 0;
while (true) {
int found = string.indexOf("category", i);
if (found == -1) break;
int start = found + 9; // start of actual category
int end = string.indexOf(" ", start);
System.out.println(string.substring(start, end));
i = end + 1; // advance i to start the next iteration
}
答案 1 :(得分:2)
似乎,你的起始位置等于冒号元素的索引,然后你提取类别的结尾。
found
等于子字符串category
的起始位置,start
位置等于found+8
并等于冒号的位置(:
) 。然后你打电话
int end = string.indexOf(":", start);
冒号索引等于开始,并且在尝试获取子字符串时得到开始和结束等于。您必须将冒号更改为空格或您拥有的任何内容,以确定上述代码中类别的结尾。
答案 2 :(得分:0)
开始和结束指向相同的索引,因此注释将在控制台中打印。
SelectedValue.Text