2014-11-13 93 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();