有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在Java中更改字符串两次(基于前面的更改)?(内部代码)

例如,假设我有一个名为names的字符串,我想。打开机箱,然后使用。在打印之前替换所有函数

我遇到的问题是,一次只应用一个步骤,而这两个函数是分开处理的

    System.out.format(names[i].toUpperCase());
        System.out.format(names[i].replaceAll("SMITH", "<>JENKINS<>"));
        System.out.println(names[i]);

提前谢谢


共 (6) 个答案

  1. # 1 楼答案

    .toUpperCase()返回一个String。你需要像这样做:

    names[i].toUpperCase().replaceAll("SMITH", "<>JENKINS<>");
    

    names[i] = names[i].toUpperCase();
    names[i].replaceAll("SMITH", "<>JENKINS<>")
    
  2. # 2 楼答案

    Java中的String是不可变的,它们本身不会改变。使用的方法将返回一个新的、已更改的字符串:

    names[i] = names[i].toUpperCase();
    System.out.format(names[i]);
    names[i] = names[i]..replaceAll("SMITH", "<>JENKINS<>");
    System.out.format(names[i]);
    

    执行您期望代码执行的操作

  3. # 3 楼答案

    因为字符串在java中是不可变的,所以这些函数都不能正常工作。它们不会改变。因此,您必须将它们分配给一个临时变量(或names[i])。像这样做

        String tmp = names[i].toUpperCase();
        System.out.format(tmp);
        tmp = tmp.replaceAll("SMITH", "<>JENKINS<>")
        System.out.format(tmp);
        System.out.println(tmp);
    
  4. # 4 楼答案

    提取一个变量

        String str = names[i].toUpperCase().replaceAll("SMITH", "<>JENKINS<>");
        System.out.println(str);
    
  5. # 5 楼答案

    您可以链接方法调用,因为String实例是不可变的,并且每个方法返回通过其操作转换的字符串

    String changed = names[i].toUpperCase().replaceAll("SMITH", "<>JENKINS<>");
    System.out.format(changed);
    

    变量changed已被提取以使代码更具可读性

  6. # 6 楼答案

    names[i].replaceAll("SMITH", "<>JENKINS<>")
    

    此代码仅返回替换的字符串。您需要将其设置为变量

    string str = names[i].replaceAll("SMITH", "<>JENKINS<>");

    或替换当前参考

    names[i]= names[i].replaceAll("SMITH", "<>JENKINS<>");