Итак, целью является поиск шаблонов, таких как «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». I.e., он не работает для «xxpxxzxxpxx». Он также терпит неудачу для «xxzxxpxxz». Это потому, что вы только вызываете sen.indexOf ('p') один раз. Вы должны вызвать его после того, как найдете «z», и вы должны использовать версию indexOf(), которая принимает два аргумента, чтобы вы могли указать позицию «z» в качестве начальной позиции для поиска. –