我正在编写代码以查看给定字符串中间是否存在xyz。这可以在xyz出现一次时有效,但是当它出现不止一次时,它将不会一直有效。
public boolean xyzMiddle(String str) {
if (str.length() <= 2) {
return false;
}
int count1 = 0;
int count2 = 0;
for (int i=(str.length()-2)/2; i<str.length()-2; i++) {
if (str.substring(i, i+3).equals("xyz")) {
count1 = str.substring(0, i).length();
count2 = str.substring(i+3).length();
}
}
if (count1 == count2 || count1+1 == count2 || count2+1 == count1) {
return true;
}
return false;
}
答案 0 :(得分:1)
这将有效:
int middle = (str.length() - 2) / 2;
return "xyz".equals(str.substring(middle, middle + 3));
如果str
的长度为偶数,则xyz
之前的字母可能会比之后多一个字母。如果你想要它而不是之前,你必须减去三个而不是两个。如果你想完全禁止这一点,首先需要if
检查字符串的长度。
答案 1 :(得分:0)
第1步:查看Java SE 6 api docs 第2步:阅读String上的条目 第3步:尝试这个:String.split(&#34; xyz&#34;);
答案 2 :(得分:0)
你的方法过于复杂......你应该使用String.split(“xyz”),然后检查返回数组的大小,如果是2,检查两个部分是否相等:
public boolean xyzMiddle(String str) {
String[] temp = str.split("xyz");
return temp.length == 2 ? temp[0].length == temp[1].length : false;
}