Java 挑选字符串中正确的字符;

Java 挑选字符串中正确的字符;,java,Java,我试图找出字符串中与另一个字符串匹配的部分之前和之后的字符,创建一个完全不同的字符串。也就是说,当调用方法wordEnds(String str,String word)以及str=“XY1XY”和word=“XY”时,新字符串将是“11” 以下是我到目前为止的情况: package codingBat; public class CodingBat { public static String wordEnds(String str, String word) { St

我试图找出字符串中与另一个字符串匹配的部分之前和之后的字符,创建一个完全不同的字符串。也就是说,当调用方法
wordEnds(String str,String word)
以及
str=“XY1XY”
word=“XY”
时,新字符串将是
“11”

以下是我到目前为止的情况:

package codingBat;

 public class CodingBat {
  public static String wordEnds(String str, String 
   word) {
    String newStr = null;

      if(str.equals(word)) {
         return ""; 
      }
      else if(!str.contains(word)) {
          return "";
      }
      else {
          for(int i = 0;i < str.length();i++) {
              if((word.equals(str.substring(i,i+1)))){
               newStr = newStr + (str.substring(i-1,i+2));
              }
              else {
                 return newStr;
              }
          }
          return newStr;
      }
  }
}
packagecodingbat;
公共类编码{
公共静态字符串wordEnds(字符串str,字符串
(字){
字符串newStr=null;
if(str.equals(word)){
返回“”;
}
如果(!str.contains(word)){
返回“”;
}
否则{
对于(int i=0;i
尝试使用正则表达式,示例中的模式将如下所示。但是您必须将
XY
更改为字符串参数,使其成为
pattern=str+“(.*)”+str
。然后您可以使用组并从中间读取字符串 下面是一个代码:

    static String middleString(String str, String word) {
        Pattern pattern = Pattern.compile(str + "(.*)" + str);
        Matcher matcher = pattern.matcher(word);
        matcher.matches();
        return matcher.group(1);
    }
此电话:

System.out.println(middleString("XY", "XY11XY"));

返回
11

为什么是“11”?字符串
str
中只有一个“1”…因此字符串word=“XY”在str中出现两次,一次在1之前,一次在1之后。由于它出现了两次,并且该方法旨在提取出现前后的字符,因此它提取第一个“XY”之后出现的“1”和最后一个“XY”之前出现的另一个“1”,从而创建新字符串“11”。确定XY1XYXY应该发生什么?