[英]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.