2014-11-13 92 views
0

說一具有字符串輸入在下面的表格:陣列格式的字符串輸入轉換爲字符串數組有效

{ 'OTH', 'REJ', 'RSTO', 'RSTOS0', 'RSTR', 'S0', 'S1', 'S2', 'S3', 'SF', 'SH' } 

什麼是將它與每一個元素是OTH轉換成一個字符串數組的有效方式, REJ等?

我目前使用String.replace()String.split()來完成此操作,並且也考慮過使用正則表達式來解決這個問題,但是想知道是否有更簡單/直觀的方法。

回答

2

replacesplit中的每一個都需要遍歷整個字符串,這意味着您需要遍歷它兩次。使用Scanner您可以一次完成,但您需要使用代表非單詞字符的分隔符(非A-Za-z0-9_),它可以用正則表達式編寫爲\\W

所以,你的代碼可以像

String text = "{ 'OTH', 'REJ', 'RSTO', 'RSTOS0', 'RSTR', 'S0', 'S1', 'S2', 'S3', 'SF', 'SH' }"; 
List<String> tokens = new ArrayList<>(); 

Scanner sc = new Scanner(text); 
sc.useDelimiter("\\W+");// one or more non-word character 
while(sc.hasNext()) 
    tokens.add(sc.next()); 

System.out.println(tokens);//[OTH, REJ, RSTO, RSTOS0, RSTR, S0, S1, S2, S3, SF, SH] 
sc.close();