如何避免java中的反斜杠

时间:2012-09-21 15:22:38

标签: 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);
    }

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

3 个答案:

答案 0 :(得分:5)

\是一个转义字符。你需要逃脱逃脱角色。

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

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

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

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

显然,\36处理很好,并被解释为另一个没有显示的ASCII字符。但在其他情况下,这可能会将Exception视为无效的转义序列。

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

Debug Screenshot debug info

答案 1 :(得分:1)

尝试\\369825655 - 基本上它逃脱逃生标志。然后用空字符替换所有\个字符。

答案 2 :(得分:1)

添加另一个反斜杠(转义字符)

ArrayList System.out.println(new Stringtest().test("The system has saved your payment under        transaction number \\369825655."));
相关问题