为了账号安全,请及时绑定邮箱和手机立即绑定

用空字符串替换 Java 括号

用空字符串替换 Java 括号

红颜莎娜 2022-07-27 16:42:45
为什么第一行没有用空字符串替换“(”,而第二行呢? public static void main(String []args){     String a="This(rab)(bar)";     a=a.replace("\\(",""); //First     String b=a.replaceFirst("\\(","");//Second    System.out.println(a + " "+b); }
查看完整描述

3 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

replace和之间有区别replaceFirst。如果您的 IDE 向您显示方法签名,您将看到:

//img1.sycdn.imooc.com//62e0fa9e0001cfb010460215.jpg

看看如何replace接受一个普通的旧targetreplaceFirst接受一个regex

"\\("是一个正则表达式,意思是“一个开括号”。replace不会将您传入的字符串视为正则表达式。它只会尝试找到一个反斜杠,后跟一个左括号,这在您的字符串中不存在。

如果你想用replace,就用"("


查看完整回答
反对 回复 2022-07-27
?
慕的地10843

TA贡献1785条经验 获得超8个赞

为了replace工作,你应该写:

a=a.replace("(",""); //First

或者replaceAll如果你想通过一个regex

a=a.replaceAll("\\(",""); //First

replace接受要替换的字符序列:

public String replace(CharSequence target, CharSequence replacement)

因此,在您的情况下,它会尝试替换 3 个字符“\(”,而不仅仅是单个字符“(”。


查看完整回答
反对 回复 2022-07-27
?
慕沐林林

TA贡献2016条经验 获得超9个赞

问题是它运行在replace多个字符中,因此,它将寻找的是\and (,因此不会发生这种情况,引号应该只包含要替换的字符:


    a = a.replace("(", ""); // First

接下来,我将原始提案和固定提案留给狙击手:


public class Main {


    private static final Main initRun = new Main();


    public static void main(String[] args) {


        String a = "This(rab)(bar)";


        System.out.println("Original");

        initRun.runOriginal(a);


        System.out.println("Fixed");

        initRun.runFixed(a);


        // Output

        // Original

        // This(rab)(bar)

        // Thisrab)(bar)

        // Fixed

        // Thisrab)bar)

        // Thisrab)bar)

    }


    /**

     * Execute the original proposal

     *

     * @param a String for replace

     */

    void runOriginal(String a) {

        a = a.replace("\\(", ""); // First

        String b = a.replaceFirst("\\(", "");// Second

        System.out.println(a + "\n" + b);

    }


    /**

     * Execute the fixed proposal

     *

     * @param a String for replace

     */

    void runFixed(String a) {


        a = a.replace("(", ""); // First

        String b = a.replaceFirst("\\(", "");// Second

        System.out.println(a + "\n" + b);

    }

}


查看完整回答
反对 回复 2022-07-27
  • 3 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信