#java #string
#java #строка
Вопрос:
Мой код принимает входные данные от пользователя, и если есть две "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);
Комментарии:
1. попробуйте использовать split («хлеб») и посмотрите, что это вам даст. также проверьте, начинается ли она с или заканчивается «хлебом», на всякий случай
2. Если вы получили сообщение об ошибке, поделитесь сообщением об ошибке
3. кроме того, вы можете использовать регулярное выражение, но в любом случае, какой результат вам нужен в обоих случаях. И что
s
в вашем вопросе?4. Поместите
s.indexOf(bread)
иs.lastIndexOf(bread)
в переменные, проверьте, не являются ли они неравными.
Ответ №1:
Есть много способов решить эту проблему. Вот 3 из них
- Сравнение
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"); }