0

首先看下面的代码

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。现在我想要整数。我该怎么办。我无法将 \ 更改为 \\ 因为文本来自网站。

4

3 回答 3

5

\是一个转义字符。您需要转义转义字符。

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

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

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

编辑:如果您无法控制字符串出现的格式,那么您可能不走运。我一直在 Eclipse 中对此进行调试,似乎一旦你用它创建了你的字符串,转义字符就会被处理,你会丢失交易号的前两位数字。您可能需要让您的数据库人员(或格式化这个可怕字符串的任何人)更改他们的实现,以便您做您需要做的事情。至少,Eclipse 调试器建议了这一点。

碰巧的是,显然,\36处理得很好,并被解释为另一个不显示的 ASCII 字符。但在其他情况下,这可能会抛出一个异常作为无效的转义序列。

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

调试截图 调试信息

于 2012-09-21T15:23:45.960 回答
1

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

于 2012-09-21T15:23:42.963 回答
1

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

ArrayList System.out.println(new Stringtest().test("The system has saved your payment under        transaction number \\369825655."));
于 2012-09-21T15:24:02.857 回答