Java Substring始终求值为false

时间:2014-12-18 05:48:04

标签: java

我正在尝试解析一个字符串,但首先我需要检查“@ \ n”是字符串中的第一个东西。我已经验证我使用.substring(start,end)方法获取了正确的数据,但是当我尝试使用contains()或equals()来评估该子字符串时,它总是返回false。

Log.v("DLI",data.substring(0,3));
    Log.v("DLI","Contains:"+data.substring(0,3).contains("@\n"));
    Log.v("DLI","Equals:"+data.substring(0,3).equals("@\n"));

以下是退出:

12-18 05:28:51.899  21610-21610/? V/DLI﹕ @\n
12-18 05:28:51.899  21610-21610/? V/DLI﹕ Contains:false
12-18 05:28:51.899  21610-21610/? V/DLI﹕ Equals:false

这是我试图解析的字符串(当我粘贴它时,Android Studio将其转义,因此我包含了AS版本(第一个)和原始版本(第二个)

"@\\n\\x1e\\rANSI 6360200102DL00390187ZV02260031DLDAQ0123456789ABC\\nDAAJOHN,Q,PUBLIC\\nDAG123 MAIN STREET\\nDAIANYTOWN\\nDAJVA\\nDAK123459999  \\nDARDM  \\nDAS          \\nDAT     \\nDAU509\\nDAW175\\nDAYBL \\nDAZBR \\nDBA20011201\\nDBB19761123\\nDBCM\\nDBD19961201\\rZVZVAJURISDICTIONDEFINEDELEMENT\\r"

"@\n\x1e\rANSI 6360200102DL00390187ZV02260031DLDAQ0123456789ABC\nDAAJOHN,Q,PUBLIC\nDAG123 MAIN STREET\nDAIANYTOWN\nDAJVA\nDAK123459999  \nDARDM  \nDAS          \nDAT     \nDAU509\nDAW175\nDAYBL \nDAZBR \nDBA20011201\nDBB19761123\nDBCM\nDBD19961201\rZVZVAJURISDICTIONDEFINEDELEMENT\r"

3 个答案:

答案 0 :(得分:3)

JAVA中的特殊字符串:http://www.freeformatter.com/java-dotnet-escape.html

  • 退格键替换为\ b
  • 换行符替换为\ n
  • Tab替换为\ t
  • 回车符替换为\ r
  • 使用\ f
  • 替换换页符
  • 双引号替换为\“
  • 反斜杠替换为\\

请注意,对于反斜杠,您必须提供两个反斜杠“\”。

所以在比较时使用两个反斜杠(“\\”)。

data.substring(0,3).contains("@\\n")

答案 1 :(得分:2)

escape sequence

data.substring(0,3).contains("@\\n")

而不是

data.substring(0,3).contains("@\n")

答案 2 :(得分:-1)

请使用子串的参数中的索引,而不是使用字符,

substring(0,3);
相关问题