我希望使用Scanner
類的方法:.useDilimiter()
解析一個文件,以前我會用一系列.replaceAll()
語句來替換我想要的dilimiter與white space
。Java - 如何使用.useDelimiter()將稀釋劑設置爲多個不同的東西?
無論如何,我試圖讓Scanner
的dilimiter的以下任一字符:.
,(
,)
,{
,}
,[
,]
,,
,!
和standard white space
。我會如何去做這件事?
我希望使用Scanner
類的方法:.useDilimiter()
解析一個文件,以前我會用一系列.replaceAll()
語句來替換我想要的dilimiter與white space
。Java - 如何使用.useDelimiter()將稀釋劑設置爲多個不同的東西?
無論如何,我試圖讓Scanner
的dilimiter的以下任一字符:.
,(
,)
,{
,}
,[
,]
,,
,!
和standard white space
。我會如何去做這件事?
掃描儀使用正則表達式(正則表達式)來描述分隔符。默認情況下,它是\p{javaWhitespace}+
,它表示一個或多個(由於+
運算符)空格。
正則表示單個從字符集中的字符我們可以使用character class [...]
。但由於在正則表達式中的[
和]
表示字符類的開始和結束,所以這些字符是元字符(甚至在字符類內)。要把它們當作文字,我們首先需要擺脫它們。我們可以通過
\
(在寫作"\\"
串)之前,\Q...\E
表示報價部分(其中所有字符都被視爲文字,而不是元字符),做到這一點。因此,代表() { } [ ] , !
字符之一的正則表達式可能看起來像"[\\Q(){}[],!\\E]"
。
如果你想添加支持標準的分隔符,你可以使用\p{javaWhitespace}+
OR操作符是|
此正則表達式相結合。
所以,你的代碼可以是這樣的:
yourScanner.useDelimiter("[\\Q(){}[],!\\E]|\\p{javaWhitespace}+");
的可能的複製[爪哇 - 在一臺掃描儀使用多個分隔符(http://stackoverflow.com/questions/6244670/java-using-multiple-delimiters -in-a-scanner) –