带齿隙的字符串-java

带齿隙的字符串-java,java,string,escaping,backslash,Java,String,Escaping,Backslash,我有一个字符串,如下所示: String str="cn=sxscapp3\20,ou=Division,o=abc"; 现在我想得到字符串的子字符串 String newstr=str.substring(0,str.indexOf(",")); Expected result : cn=sxscapp3\20 Actual result: cn=sxscapp3\ 关于上述场景的任何建议都会很有帮助。在实际执行子字符串之前,您需要通过替换为\\\\20来转义\20字符,您可以参考以下

我有一个字符串,如下所示:

String str="cn=sxscapp3\20,ou=Division,o=abc";
现在我想得到字符串的子字符串

String newstr=str.substring(0,str.indexOf(","));

Expected result : cn=sxscapp3\20

Actual result: cn=sxscapp3\

关于上述场景的任何建议都会很有帮助。

在实际执行
子字符串之前,您需要通过替换为
\\\\20
来转义
\20
字符,您可以参考以下代码:

String str="cn=sxscapp3\20,ou=Division,o=abc";
str = str.replaceAll("\20", "\\\\20");
String newstr=str.substring(0,str.indexOf(","));
System.out.println(newstr);

输出:cn=sxscapp3\20

查看Ascii表

System.out.println("\60"); 
如果您打印如下内容:\60

System.out.println("\60"); 
与打印0相同,因为0映射到60(八进制)

你需要先把斜线换掉


执行
str=str.replaceAll(“\20”,“\\\\20”)

您好,正如我在评论中提到的,字符串值由程序动态检索。我必须动态处理\XX值。任何建议都会有帮助。您所说的\XX并不总是\20是什么意思?您至少知道要转义的字符集(数组)吗?否则,如何知道要转义什么?程序检索的字符串值可能有反斜杠。例如:cn=sxscapp3\20,ou=Division,o=abc。另一个例子是cn=sxscap3\30,ou=Division,o=abc。我需要将反斜杠和后面的字符转义到逗号。您提供的代码没有包含反斜杠的字符串。相反,您显示了一个字符串文字,其中包含U+0010的八进制转义序列。我的猜测是,这不是您实际的代码。请提供一个.Hi@JonSkeet我的程序读取ldap树并检索其上下文。如示例所示。我需要从整个字符串中获取cn值。当字符串有反斜杠时,我无法处理反斜杠后面的尾随字符。因此,请在。目前,您的代码包含U+0010,但没有反斜杠。现在还不清楚你正在使用的字符串中是否有这个。您应该能够在不涉及任何LDAP的情况下演示该问题,只要您已经完成了适当的诊断工作,以了解您实际从LDAP获得的字符串。