2010-11-04 106 views
0

以下是我從未知來源得到的字符串「one/two/three \ 123today」,即我無法更改輸入字符串的格式。 我需要得到反斜槓後的子串,即123today忽略字符串中的octalescape字符

這裏\ 123正在考慮爲八進制轉義。 我試圖將它分解爲一個字符序列,但是這將八進制轉義視爲一個字符。

我正在用java編寫代碼。 我該如何去做?

回答

2

答案很簡單。

如果你希望你的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語言規範。

1

字符串"one/two/three\123today""one/two/threeStoday"完全相同。如果你想分割一個'S'字符,你可以這樣做,但是無法判斷一個字符是直接編碼還是通過轉義序列編碼。

+0

如何將\ 1替換爲\\ 1,替換不起作用,也不會將其轉換爲字符數組。 – 2010-11-04 06:17:46

+0

您更改源文件中的字符串文字。如果我正確地閱讀這個問題,那麼字符串包含一個''\ 123''字符的問題就是一種語法。 – 2010-11-04 06:19:21

+0

是的,我已經試過了。由於'\ 1'被視爲實體,因此無法找到字符串'\\'。 – 2010-11-04 06:21:52