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应该发生什么?