这是一个示例字符串“one / two / three \ 123today”,我从一个未知来源获得,但我无法更改我得到的输入字符串的格式。 我需要在反斜杠之后得到子字符串,即123today
这里\ 123被视为八进制逃脱。 我尝试将其拆分为字符序列,但这会将八进制转义视为一个字符。
我在java中编写代码。 我该怎么做呢?
答案 0 :(得分:2)
答案很简单。
如果您希望Java程序包含包含字符序列'\','1','2','3'的Java字符串文字,那么必须在源代码中将其写为"...\\123..."
。
例如:
String testInput = "one/two/three\\123today";
int pos = test.indexOf("\\123");
但是,反斜杠转义仅与源代码中的Java字符串(或字符)文字相关。如果您的程序从某个文件中读取String(例如),或者它以某种方式组装String而不涉及String或字符文字,则源文件中不需要转义,或者其他任何操作。例如:
char backslash = (char) 92;
String testInput = "one/two/three" + backslash + "123today";
int pos = test.indexOf(backslash + "123");
或
String input = ... // read a file that contains the sequence '\', '1', '2', '3'
int pos = test.indexOf("\\123"); // search for that sequence
(旁白:一些编程语言提供了替代的String文字语法,这意味着你可以免除转义.Java不会。故事结束。)
这里的\ 2被eclipse视为八进制逃逸。
对于记录,它是定义它的Java语言规范。 Eclipse只是(正确地)实现了Java语言规范。
答案 1 :(得分:1)
字符串"one/two/three\123today"
与"one/two/threeStoday"
完全相同。如果要拆分'S'
字符,可以这样做,但无法判断字符是直接编码还是通过转义序列编码。