繁体   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