2017-02-24 48 views
0

我試圖通過一個字符串來解析垃圾字符,在本例中它是這樣的:&,%,$,#,*,@等。但我想保持空間和括號,現在我使用的是一個字符串分隔符,只是建立串關的說:如何使用具有多個參數的分隔符

public TokenIter(String line){ 
    line.trim(); 
    Scanner scr = new Scanner(line); 

    String built = ""; 
    scr.useDelimiter("[^A-Za-Z]+|^)|^(|^ "); 
    while (scr.hasNext()){ 
     built+= scr.next(); 
    } 
this.line = built.trim(); 

我也使用正則表達式和.matches(嘗試),但對於一些搞砸了掃描儀的原因。任何幫助如何設置分隔符將不勝感激!

+0

你可以像這樣構建一個正則表達式:'\\&| \\%| \\%| \\ $ | \\#'對於每個你不需要的字符想要在你的字符串中,然後執行'built + = scr.next()。replaceAll(「regex」,「」);' – XtremeBaumer

回答

1

你可以做的是使用string.replaceAll它接受正則表達式,並用給定的字符串替換它的所有出現。

public void TokenIter(String line) { 
    this.line = line.trim().replaceAll("[&%$#*@]+", ""); 
} 
+0

除非它們因Java而逃脫,否則這些字符都不需要轉義。在'[]'中,通常需要轉義的唯一東西是']'和反斜槓本身。 –

+0

謝謝!你說得對,更新了。 –

+1

更新任何可能絆倒這個答案的人,連字符也是如此。連字符應該始終處於開始或結束或角色等級或逃脫,否則他們會造成不可預知的破壞。恥辱OP從未回過頭來表示感謝,+1是我的。 –

相關問題