我的代码从用户那里获取输入,如果有两个"bread"
子字符串,则将打印它们之间的字符串。例如,"breadjavabread"
输出"java"
。但是,当我的代码只有一个"bread"
字符串时,会弹出错误。例如,"usjdbbreaddudub"
。我该如何解决?
String cheese = "no bread";
String bread = "bread";
for (int i = 0; i < s.length() - 5; i++)
{
String m = s.substring(i, i + 5);
if (m.equals(bread))
{
cheese = s.substring(s.indexOf(bread) + bread.length(), s.lastIndexOf(bread));
}
}
System.out.print(cheese);
答案 0 :(得分:2)
有很多方法可以解决此问题。这是其中的三个
比较indexOf
和lastIndexOf
String cheese;
String bread = "bread";
int firstIndex = s.indexOf(bread);
int lastIndex = s.lastIndexOf(bread);
if (firstIndex == -1) {
cheese = "no bread";
} else if (lastIndex == firstIndex) {
cheese = "only one bread";
}
cheese = s.substring(firstIndex + bread.length(), lastIndex);
System.out.print(cheese);
正则表达式:
Matcher m = Pattern.compile("bread(.+?)bread").matcher(s);
if (m.find()) {
System.out.println(m.group(1));
} else {
System.out.println("Not enough bread");
}
拆分:
String[] parts = s.split("bread");
if (parts.length == 3) {
System.out.println(parts[1]);
} else {
System.out.println("Not enough or too much bread");
}