我必须编写一个程序来打印从用户输入的字符串,并将第一个字母替换为"#":
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);
}
}
用户可以输入他想要的字符串数。我想用Split方法拆分字符串,但它不适用于ArrayList。
apr 30, 2018 4:42:15 PM org.apache.catalina.startup.Bootstrap initClassLoaders
GRAVE: Class loader creation threw exception
java.io.IOException: La sintassi del nome del file, della directory o del volume non è corretta
at java.io.WinNTFileSystem.canonicalize0(Native Method)
at java.io.WinNTFileSystem.canonicalize(Unknown Source)
at java.io.File.getCanonicalPath(Unknown Source)
at java.io.File.getCanonicalFile(Unknown Source)
at org.apache.catalina.startup.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:174)
at org.apache.catalina.startup.Bootstrap.createClassLoader(Bootstrap.java:139)
at org.apache.catalina.startup.Bootstrap.initClassLoaders(Bootstrap.java:80)
at org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:199)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:398)
答案 0 :(得分:1)
通过Java中的正则表达式帮助解决字符串中替换字符的任务。除了通过Pattern
类显式使用正则表达式之外,Java还提供了一个便利API,可以通过String
方法直接在replaceAll
类上使用正则表达式功能。
以不区分大小写的方式使用#
替换所有特定字符的方法的一种方法是使用replaceAll
和正则表达式(?i)x
,其中x
是初始值您正在处理的字符串s
的字符:
String result = s.replaceAll("(?i)"+s.charAt(0), "#");
在调用s.charAt(0)
之前,您需要确保字符串非空。
答案 1 :(得分:1)
如果您想用单个单词阅读,可以使用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()而不是.nextLine()它会考虑按空格和换行分隔的每个单词,即使你一次放入一行。
答案 2 :(得分:-1)
假设您已成功创建ArrayList,我更喜欢使用Iterator接口访问ArrayList中的每个元素。然后,您可以使用任何String变量并为其分配ArrayList中的值。此后,您可以在刚刚创建的String变量中使用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
}
我希望这有帮助:) 建议总是受到赞赏。