首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将字符串的多个部分放入列表中?

如何将字符串的多个部分放入列表中?
EN

Stack Overflow用户
提问于 2017-02-11 13:32:23
回答 2查看 80关注 0票数 0

因此,我们的目标是在字符串中查找类似"zip“和"zap”的模式,以“z”开头,以“p”结尾。然后,对于所有这样的字符串,删除中间的字母。

我想到的是,我使用一个for循环来检查字符串的每个字母,一旦它到达'z',它就会获得indexOf('p'),并将它和中间的所有内容放到一个ArrayList中,同时从原始字符串中删除自己,以便可以找到indexOf('p')。

问题是我找不到这样做的方法,因为我对Java还很陌生。如果有人能帮上忙,我将不胜感激:)

到目前为止,这是我的代码

代码语言:javascript
复制
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;
        }
    }
}

}

EN

回答 2

Stack Overflow用户

发布于 2017-02-11 15:03:14

使用这个,这里我使用"\bz.p\b"模式来查找任何包含以z开头和以p结尾的字符的单词任何字符可以介于两者之间

代码语言:javascript
复制
 String s ="Write a sentence with no zip and zap spaces:";
 s=s.replaceAll("\\bz.p\\b", "zp");
 System.out.println(s);

输出:

代码语言:javascript
复制
Write a sentence with no zp and zp spaces:

或者它可以是

代码语言:javascript
复制
 s.replaceAll("z\\w+p", "zp");

这里你可以检查你的字符串

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

票数 1
EN

Stack Overflow用户

发布于 2017-02-11 15:11:37

我想你是说,例如,输入zipzapityzoop应该改为zpzpityzp,而iaoo则进入list。如果我误解了你的意思,请纠正我。

你已经上路了,似乎已经了解了一些基础知识。我看到的问题很小,但您当然希望修复它们:

  • @RicharsSchwartz提到,要查找所有像zipzapzoop这样的字符串,您需要在找到的每个z之后查找p。当您在索引i处找到z时,您可以在z之后使用sen.indexOf('p', i + 1)查找p (第二个参数导致在找到z时从该i开始搜索,您将i设置回0,这将从字符串的开头开始。不需要这样做,这样你的程序就永远不会stop.
  • sen.substring(i, p1+1)去掉所有的zip,而我知道你只想要i。您需要将参数调整为substring().
  • Your,使用sen.replace(word, "")将替换所有出现的word。因此,一旦你修复了你的程序,从zap中去掉了azappa将变成zpp (而不是zppa),azap将变成zp。没有一种简单的方法可以从String中只删除一个特定的子字符串。我认为解决方案是使用StringBuilder类。它有一个delete方法,可以删除两个指定索引之间的部分,这是你需要的(呃,这是不是一个家庭作业,你不应该使用你在class?)
  • Finally中没有学到的类,你把修改后的字符串赋给了另一个变量idk,但是你继续搜索sen。这就像依次将zpzapityzoopzipzpityzoopzipzapityzp赋值给idk,而不是zpzpityzp。但是,如果您按照我刚才的建议使用StringBuilder,则始终使用相同的StringBuilder就可以了。

希望它能让你振作起来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42172610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档