该方法的replaceAll没有工作对我来说我究竟做错了什么?

问题描述 投票:0回答:5

我运行的代码,但它并没有为String2替换字符串1

我试图梳理扫描仪,但没有奏效。我试图使扫描仪分别关闭而导致理所当然的语法错误。

import java.util.*;
public class Remove_and_Replace {
public static void main(String []args) {
      Scanner a = new Scanner(System.in);
      System.out.println("Enter your first word:");
      String String1 = a.nextLine();
      Scanner b = new Scanner(System.in);
      System.out.println("Enter your second word:");
      String String2 = b.nextLine();
      Scanner c = new Scanner(System.in);
      System.out.println("Enter your sentence:");
      String String3 = c.nextLine();
      c.close();

      String replaceString=String3.replaceAll("String1","String2");
     System.out.println(replaceString); 
    }
}

预期成绩:

Enter your first word:
bad
Enter your second word:
good
Enter your sentence:
I am always bad.
I am always good.

实际结果:

Enter your first word:
bad
Enter your second word:
good
Enter your sentence:
I am always bad.
I am always bad.
java string replaceall
5个回答
0
投票

这条线:

String replaceString=String3.replaceAll("String1","String2");

应改为:

String replaceString=String3.replaceAll(String1, String2);

在第一行,你是要替换的,而不是使用对象的值“字符串1”本身。


0
投票

为什么使用字符串1,字符串加引号?

替换此:

  String replaceString=String3.replaceAll("String1","String2");

有了这个:

  String replaceString=String3.replaceAll(String1,String2);

BTW,按照命名规则,变量总是命名开始用小写字母。所以它应该看起来都像:

public static void main(String[] args) {
    Scanner a = new Scanner(System.in);
    System.out.println("Enter your first word:");
    String firstWord = a.nextLine();
    Scanner b = new Scanner(System.in);
    System.out.println("Enter your second word:");
    String secondWord = b.nextLine();
    Scanner c = new Scanner(System.in);
    System.out.println("Enter your sentence:");
    String sentence = c.nextLine();
    c.close();

    String updatedSentence = sentence.replaceAll(firstWord, secondWord);
    System.out.println(updatedSentence);
}

更多的是,你可以在这里阅读:https://www.javatpoint.com/java-naming-conventions


0
投票

你需要从方法删除引号。会发生什么事是在寻找一个词“的String1”,如果发现上述字,将字“String2的”替换它。删除引号使得它,所以它会寻找对象的引用而不是实际的变量名。

这:String replaceString=String3.replaceAll("String1", "String2");

应该成为这样的:String replaceString=String3.replaceAll(String1,String2);


0
投票

删除双引号:

  String replaceString=String3.replaceAll(String1, String2);

说明:

有了您的原始行,你用这个词String2的替换字面字String1中。如果没有双引号,要更换存储在String1变量(好)字存储在String2变量(坏的)这个词。在一个侧面说明,Java的命名约定指定变量以小写字母 - 大写用于类。


-2
投票
String replaceString = String3.replaceAll(String1,String2);

常这样和打印replacestring,你会得到答案

© www.soinside.com 2019 - 2024. All rights reserved.