如何检查特定字符串是否在另一个字符串中多次出现?

时间:2019-04-15 06:00:42

标签: java string

我的代码从用户那里获取输入,如果有两个"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 个答案:

答案 0 :(得分:2)

有很多方法可以解决此问题。这是其中的三个

  1. 比较indexOflastIndexOf

    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);
    
  2. 正则表达式:

    Matcher m = Pattern.compile("bread(.+?)bread").matcher(s);
    if (m.find()) {
        System.out.println(m.group(1));
    } else {
        System.out.println("Not enough bread");
    }
    
  3. 拆分:

    String[] parts = s.split("bread");
    if (parts.length == 3) {
        System.out.println(parts[1]);
    } else {
        System.out.println("Not enough or too much bread");
    }