以下是我從未知來源得到的字符串「one/two/three \ 123today」,即我無法更改輸入字符串的格式。 我需要得到反斜槓後的子串,即123today忽略字符串中的octalescape字符
這裏\ 123正在考慮爲八進制轉義。 我試圖將它分解爲一個字符序列,但是這將八進制轉義視爲一個字符。
我正在用java編寫代碼。 我該如何去做?
以下是我從未知來源得到的字符串「one/two/three \ 123today」,即我無法更改輸入字符串的格式。 我需要得到反斜槓後的子串,即123today忽略字符串中的octalescape字符
這裏\ 123正在考慮爲八進制轉義。 我試圖將它分解爲一個字符序列,但是這將八進制轉義視爲一個字符。
我正在用java編寫代碼。 我該如何去做?
答案很簡單。
如果你希望你的Java程序包含Java String文字包含字符序列「\」,「1」,「2」,「3」,你MUST把它寫成"...\\123..."
在源代碼。
例如:
String testInput = "one/two/three\\123today";
int pos = test.indexOf("\\123");
然而,反斜槓是只有關Java字符串(或字符)文字在源代碼。如果程序從某個文件讀取字符串(例如),或者它以某種不涉及字符串或字符文字的方式組裝字符串,則在源文件中不需要轉義,或者其他方法。例如:
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
(旁白:一些編程語言提供了意味着你可以逃脫免除替代字符串文字語法的Java並沒有結束的故事。)
這裏\ 2被認爲是日食中的八進制轉義。
爲了記錄,它定義了這一點的Java語言規範。 Eclipse只是(正確)實現Java語言規範。
字符串"one/two/three\123today"
與"one/two/threeStoday"
完全相同。如果你想分割一個'S'
字符,你可以這樣做,但是無法判斷一個字符是直接編碼還是通過轉義序列編碼。
如何將\ 1替換爲\\ 1,替換不起作用,也不會將其轉換爲字符數組。 – 2010-11-04 06:17:46
您更改源文件中的字符串文字。如果我正確地閱讀這個問題,那麼字符串包含一個''\ 123''字符的問題就是一種語法。 – 2010-11-04 06:19:21
是的,我已經試過了。由於'\ 1'被視爲實體,因此無法找到字符串'\\'。 – 2010-11-04 06:21:52