因此,我们的目标是在字符串中查找“zip”和“zap”等模式,从'z'开始并以'p'结尾。然后,对于所有这样的字符串,请删除中间的字母。如何将一个字符串的多个部分放入列表中?
我想到的是,我使用for循环来检查字符串的每个字母,一旦它到达'z',它就会得到indexOf('p'),并把它放在中间一个ArrayList,同时从原始字符串中删除它,以便可以找到indexOf('p')。
问题是,我找不到一种方法来做到这一点,因为我对Java相当陌生。如果有人可以帮助我感谢:)
这是我到目前为止的代码
package Homework;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
public class ZipZap {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
List<String> list = new ArrayList<String>();
System.out.print("Write a sentence with no spaces:");
String sen = in.next();
int len = sen.length();
int p1 = sen.indexOf('p');
String word = null;
String idk = null;
for(int i=0; i<len; i++){
if(sen.charAt(i)=='z'){
word = sen.substring(i, p1+1);
list.add(word);
idk = sen.replace(word,"");
i=0;
}
}
}
}
也许看看'String#split'将'String'拆分为一个单词数组 – MadProgrammer
使用String.split来查找所有的“z”(http://stackoverflow.com/questions/2206378 /如何对分裂一个字符串,但是,也-保持最分隔符)。那么对于列表中的每个单词,将第二个位置的所有字母替换为第一个“p”之前 –
如果在字母“z”之前出现“p”,则此代码将失败。即,“xxpxxzxxpxx”失败。它也失败了“xxzxxpxxz”。那是因为你只调用sen.indexOf('p')一次。您应该在找到'z'后调用它,并且应该使用带有两个参数的indexOf()版本,以便您可以指定'z'位置作为搜索的起始位置。 –