因此,我遇到了一个问题,即我的代码无法删除空格以外的特殊字符。我尝试了跟踪索引,甚至添加索引,它仍然无法正常工作。我已经尝试了输入“ BANANA&PEEL”,但无法正常工作。
String strMessage = input.nextLine();
String strChars = " !@#$%^&&*() ";
for(int i = 0; i < strMessage.length() - 1; i++)
for(int j = 0; j < strChars.length(); j++) {
if(strChars.charAt(j) == strMessage.charAt(i)) {
strMessage = strMessage.substring(0, strMessage.indexOf(strMessage.charAt(i))) + strMessage.substring(strMessage.indexOf(strMessage.charAt(i+1)));
break;
}
}
System.out.println(strMessage);
所以我的输出应该是BANANAPEEL
答案 0 :(得分:1)
我认为这样可以很好地工作:
Scanner input = new Scanner(System.in);
String strMessage = input.nextLine();
String strChars = " !@#$%^&&*()";
String temp = "";
boolean isInStrChars = false;
for (int i = 0; i < strMessage.length(); i++){
isInStrChars = false;
for (int j = 0; j < strChars.length(); j++) {
if (strChars.charAt(j) == strMessage.charAt(i)) {
isInStrChars = true;
}
}
if(!isInStrChars){
temp+=strMessage.charAt(i);
}
}
System.out.println(temp);
我刚刚创建了一个'temp'-String ,并且只有当原始字符串中的字符不在 String strChars 中时,该字符才会添加到“ temp'-String。
编辑:当然,您可以在最后将temp-String设置为原始strMessage:
strMessage = temp;
答案 1 :(得分:0)
您可以使用String Tokenizer类来分隔字符串。
StringTokenizer t = new StringTokenizer(strMessage," !@#$%^&&*()");
while(t.hasMoreElements()){
System.out.print(t.nextToken()+""); }
假设strMessage =“ hello $#&worl#d”;
输出为helloworld
答案 2 :(得分:0)
使用StringTokenizer ----
StringTokenizer st1 =
new StringTokenizer("hello$#& w orl#d", " !@#$%^&&*()");
while (st1.hasMoreTokens())
System.out.print(st1.nextToken());
输出-helloworld
答案 3 :(得分:0)
您可以简单地使用String类的replaceAll(String regex, String replacement)
类似以下内容
public static void main(String[] args) {
String source = "hel!lo$#& w orl#d";
String replacementChar = " |!|@|#|\\$|%|^|&|(|)|\\*"; //Add you char separated by OR( |)
String s = source.replaceAll(replacementChar, "");
System.out.println(s);
}
输出:
helloworld
编辑:
如评论中所述,您不想使用RegEx,而只想保留字母,可以使用Character.isAlphabetic
来解决。 public static void main(String[] args) throws IOException {
String strMessage = "BANANA & PEEL";
StringBuilder builder = new StringBuilder();
for (int i = 0; i < strMessage.length(); i++) {
if (Character.isAlphabetic(strMessage.charAt(i))) {
builder.append(strMessage.charAt(i));
}
}
String finalString = builder.toString();
System.out.println(finalString);
}
答案 4 :(得分:0)
使用lambda函数,该函数删除所有作为字符串传递的字符
String strMessage = "BANANA & PEEL";
String strChars = " !@#$%^&&*()";
deleteChars.apply( strMessage, strChars ); // BANANAPEEL