簡體   English   中英

如何將字符串的多個部分放入列表中?

[英]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");

在這里你可以檢查你的字符串

https://regex101.com/r/aKaNTJ/2

我認為您是說應該將輸入zipzapityzoop更改為zpzpityzp其中iaoo進入list 如果我誤解了你的意圖,請糾正我。

您正在路上,似乎了解基本知識。 我看到的問題很小,但是您當然要修復它們:

  • 正如@RicharsSchwartz提到的,要查找所有字符串(如zipzapzoop ,則需要在找到的每個z之后找到p 當您在索引i處找到z時,可以使用sen.indexOf('p', i + 1)z之后找到p (第二個參數使搜索從該索引開始)。
  • 每次找到z ,都將i設置為0,這是從字符串的開頭開始的。 無需這樣做,這樣您的程序將永遠不會停止。
  • 當我知道您只想要isen.substring(i, p1+1)取出所有zip 您需要將參數調整為substring()
  • 您對sen.replace(word, "")將替換所有出現的word 因此,一旦您修復程序以從zap取出azappa就會變成zpp (不是zppa ),而azap將會是zp 沒有簡單的方法可以從String刪除一個特定的子String 我認為解決方案是使用StringBuilder類。 它具有delete方法,該方法將刪除兩個指定索引之間的部分,而這正是您所需要的(是,這是一項家庭作業,您不應該使用在課堂上沒有學過的課嗎?)
  • 最后,您將更改后的字符串分配給另一個變量idk ,但隨后繼續搜索sen 這就好比分配zpzapityzoopzipzpityzoopzipzapityzpidk反過來,但從來沒有zpzpityzp 但是,如果您使用StringBuilder正如我剛才所說,只要使用相同StringBuilder一路走過,你會被罰款。

希望它能幫助您前進。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM