[英]How do I put multiple parts of a string into a list?
因此,目標是在字符串中查找以“ z”和“ p”開頭的模式,例如“ zip”和“ zap”。 然后,對於所有此類字符串,刪除中間字母。
我想到的是,我使用一個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;
}
}
}
}
使用this,這里我使用“ \\ bz.p \\ b”模式來查找任何包含以z開頭char到以p結尾的單詞,介於兩者之間
String s ="Write a sentence with no zip and zap spaces:";
s=s.replaceAll("\\bz.p\\b", "zp");
System.out.println(s);
輸出:
Write a sentence with no zp and zp spaces:
或者可以是
s.replaceAll("z\\w+p", "zp");
在這里你可以檢查你的字符串
我認為您是說應該將輸入zipzapityzoop
更改為zpzpityzp
其中i
, a
和oo
進入list
。 如果我誤解了你的意圖,請糾正我。
您正在路上,似乎了解基本知識。 我看到的問題很小,但是您當然要修復它們:
zip
, zap
和zoop
,則需要在找到的每個z
之后找到p
。 當您在索引i
處找到z
時,可以使用sen.indexOf('p', i + 1)
在z
之后找到p
(第二個參數使搜索從該索引開始)。 z
,都將i
設置為0,這是從字符串的開頭開始的。 無需這樣做,這樣您的程序將永遠不會停止。 i
時sen.substring(i, p1+1)
取出所有zip
。 您需要將參數調整為substring()
。 sen.replace(word, "")
將替換所有出現的word
。 因此,一旦您修復程序以從zap
取出a
, zappa
就會變成zpp
(不是zppa
),而azap
將會是zp
。 沒有簡單的方法可以從String
刪除一個特定的子String
。 我認為解決方案是使用StringBuilder
類。 它具有delete
方法,該方法將刪除兩個指定索引之間的部分,而這正是您所需要的(是,這是一項家庭作業,您不應該使用在課堂上沒有學過的課嗎?) idk
,但隨后繼續搜索sen
。 這就好比分配zpzapityzoop
, zipzpityzoop
和zipzapityzp
到idk
反過來,但從來沒有zpzpityzp
。 但是,如果您使用StringBuilder
正如我剛才所說,只要使用相同StringBuilder
一路走過,你會被罰款。 希望它能幫助您前進。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.