如何避免java中的反斜杠

Kap*_*arg 0 java core

首先看下面的代码

public static void main(String args[])
   {
     System.out.println(new Stringtest().test("The system has saved your payment under        transaction number \369825655."));
    }

private String test(String aa)
    {
        return aa.substring(58);
    }
Run Code Online (Sandbox Code Playgroud)

所以逻辑上这个方法应该打印369825665.但是由于反斜杠它打印9825655.现在我想要整数.我该怎么办.我无法将\更改为\\因为文本来自网站.

ast*_*eri 5

\是一个逃脱角色.你需要逃脱逃脱角色.

System.out.println(new Stringtest().test("The system has saved your payment under transaction number \\369825655."));
Run Code Online (Sandbox Code Playgroud)

有关转义序列的更多信息,请参阅此Oracle文档.基本上反斜杠告诉系统应该以特殊方式(不仅仅是纯文本)解释它后面的字符.当你逃避逃脱时,它也会被特别对待......作为纯文本,而不是作为转义字符.

它有时会让人感到困惑,但一旦你学会了核心概念就会很直观.

编辑:如果你无法控制字符串给你的格式,你可能会运气不好.我一直在Eclipse中对它进行调试,看起来只要你用它创建了String,就会处理转义字符并丢失事务编号的前两位数字.您可能需要让您的数据库人员(或任何格式化这个可怕的字符串)来改变他们的实现,以便您做您需要做的事情.Eclipse调试器至少表明了这一点.

事实上,它恰好\36处理得很好,并被解释为另一个不显示的ASCII字符.但在其他情况下,这可能会将异常作为无效的转义序列抛出.

在我自己的测试中,似乎只要声明/创建了String文字,就会发生信息丢失.因此,根据我的知识,将无法恢复它.

调试截图 调试信息