目的は、文字列中の「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'を単語の配列に分割するために' String#split'を見てみましょう。 – MadProgrammer
String.splitを使用してすべての "z"を検索する方法についてはhttp://stackoverflow.com/questions/2206378 /分割する方法もありますが、区切り文字を保持することもできます)。リストの各単語について、2番目の位置のすべての文字を最初の "p"の前に置き換えます。 –
文字 'z'の前に 'p'がある場合、このコードは失敗します。つまり、 "xxpxxzxxpxx"で失敗します。また、 "xxzxxpxxz"に失敗します。これはsen.indexOf( 'p')を1回だけ呼び出すためです。 'z'を見つけたらそれを呼び出す必要があります。また、2つの引数を取るindexOf()のバージョンを使用して、検索の開始位置として 'z'の位置を指定する必要があります。 –