首先看下面的代码
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。现在我想要整数。我该怎么办。我无法将\更改为\\,因为文本来自网站。
答案 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文字,就会发生信息丢失。因此,据我所知,将无法恢复它。
答案 1 :(得分:1)
尝试\\369825655
- 基本上它逃脱逃生标志。然后用空字符替换所有\
个字符。
答案 2 :(得分:1)
添加另一个反斜杠(转义字符)
ArrayList System.out.println(new Stringtest().test("The system has saved your payment under transaction number \\369825655."));