2011-01-13 82 views
2

嘿大家, 這個問題似乎真的很傻給我,但我不能爲我的生活的任何地方找到答案。我想要做的就是掃描一個用星號(*)分隔的字符串。但是,當我嘗試foo.useDelimiter(「*」)時,Java將星號解釋爲通配符,並將每個字符用作分隔符......這顯然不是我想要的。 我試過使用反斜槓作爲轉義字符,但那給了我編譯器錯誤「非法轉義字符」。使用星號字符作爲Java掃描器分隔符

這可能是很簡單,但再一次,我不知道在哪裏可以找到答案!

非常感謝!

萊納斯

回答

6

在Java字符串,要使用一個雙反斜線\\這樣就可以解釋的實際字符串是\ *,從而逃避*。

本質上,你必須逃避轉義字符。

+0

哦,非常感謝!我覺得自己像一個白癡...... – Linus 2011-01-13 18:54:01

4

由於掃描儀使用相同的模式類其他正則表達式運算,兩個反斜槓應該做的伎倆。

(單反斜線只轉義字符串中的下一個字符常量,需要兩個人來獲得一個實際的字符串)。

2

另一種方法是:

Scanner in = ...; 
in.useDelimiter("[*]"); 

括號內的一切是你想用作分隔符的字符。

+0

請注意,一個字符類本身可能包含可能需要轉義的其他元字符。 – 2011-01-13 18:56:16