如何在java中循环字符串ArrayList以及如何拆分其中的元素

如何在java中循环字符串ArrayList以及如何拆分其中的元素,java,arrays,string,arraylist,Java,Arrays,String,Arraylist,我必须编写一个程序,打印用户输入的字符串,每个字母(如第一个字母)都替换为“#”: 用户可以输入所需的字符串数。我曾想用split方法分割字符串,但它不适用于ArrayList import java.util.*; public class CensuraLaPrima { public static void main(String[] args) { Scanner s= new Scanner (System.in); String tdc;

我必须编写一个程序,打印用户输入的字符串,每个字母(如第一个字母)都替换为“#”:

用户可以输入所需的字符串数。我曾想用split方法分割字符串,但它不适用于ArrayList

import java.util.*;

public class CensuraLaPrima {

    public static void main(String[] args) {
        Scanner s= new Scanner (System.in);
        String tdc;
        ArrayList <String> Parolecens= new ArrayList <String>();

        while (s.hasNextLine()) {
            tdc=s.nextLine();
            Parolecens.add(tdc);
        }

        System.out.println(Parolecens);
    }
}
import java.util.*;
公共类审查机构{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
字符串tdc;
ArrayList Parolecens=新的ArrayList();
而(s.hasNextLine()){
tdc=s.nextLine();
添加(贸易发展局);
}
系统输出打印LN(Parolecens);
}
}

调用替换字符串中字符的任务通常在Java正则表达式的帮助下解决。除了通过
模式
类显式使用regex之外,Java还提供了一个方便的API,通过
replaceAll
方法直接在
String
类上使用regex功能

以不区分大小写的方式将特定字符的所有匹配项替换为
的一种方法是使用正则表达式
replaceAll
(?i)x,其中
x
是正在处理的字符串
s
的初始字符:

String result = s.replaceAll("(?i)"+s.charAt(0), "#");
在调用
s.charAt(0)
之前,需要确保字符串非空


如果您想用单字阅读,可以使用Scanner.next()代替。它基本上给出了每个单词,所以每个字符串都没有空格和换行符。如果你同时输入两个单词也可以。 我猜你想做这样的事。根据您的需要随时使用和更改

import java.util.*;
public class CensuraLaPrima {

  public static void main(String[] args) {
    Scanner s= new Scanner (System.in);
    String tdc;

    while (s.hasNext()) {
      tdc=s.next();
      char c = tdc.charAt(0);
      System.out.print(tdc.replaceAll(Character.toLowerCase(c) +"|"+  Character.toUpperCase(c), "#"));
    }


}
}

编辑:
基本上可以归结为这一点。如果你想用扫描器使用.NEXT()而不是.NestLoin(),它会考虑空间和换行符分隔的每一个单词,即使你同时输入整行。

< P>假设你已经成功地创建了ArrayList,我宁愿使用迭代器接口来访问ARAYLIST中的每个元素。然后可以使用任何字符串变量并在ArrayList中为其赋值。此后,您可以在刚刚创建的字符串变量中使用split()。大概是这样的:

//after your while loop
Iterator<String> it = Parolecens.iterator();

String myVariable = "";
String mySplitString[];

while(it.hasNext()) {
    myVariable = it.next();
    mySplitString = myVariable.split(//delimiter of your choice);
    //rest of the code
}
//在while循环之后
迭代器it=Parolecens.Iterator();
字符串myVariable=“”;
字符串mySplitString[];
while(it.hasNext()){
myVariable=it.next();
mySplitString=myVariable.split(//您选择的分隔符);
//代码的其余部分
}
我希望这有帮助:)
非常感谢您的建议。

我已经为Java添加了标签…您的代码没有显示任何尝试。。。我不明白你在哪里尝试分裂,为什么?你的问题是什么?如何寻找像第一封信?如何把这封信寄给#?或者如何捕捉用户输入的单词?如果没有错误描述,则无法工作。添加错误消息或预期数据以及您得到的信息。首先,欢迎。其次,
Parolecens
不应以大写字母开头。这太令人困惑了,不推荐使用。第三,请做更多的研究,并阅读我将在下一篇评论中提供的链接。此外,这将对你有很大帮助-然后发布你尝试过的内容,清楚地解释哪些内容不起作用,并提供一个解决方案。阅读请务必阅读和阅读。谢谢,但代码应该会改变每个单词,不仅仅是第一个。这改变了每个单词,让它编译并运行它。有时它不起作用:如果我写test prova test uno due tre quattro,它就会出现是的,是的,是的,是的##ro@Lory对不起,我忘了粘贴扫描仪。next()而不是nextLine():D现在就试试。不客气
//after your while loop
Iterator<String> it = Parolecens.iterator();

String myVariable = "";
String mySplitString[];

while(it.hasNext()) {
    myVariable = it.next();
    mySplitString = myVariable.split(//delimiter of your choice);
    //rest of the code
}