假设一个人在下面的表格中输入了字符串:
{ 'OTH', 'REJ', 'RSTO', 'RSTOS0', 'RSTR', 'S0', 'S1', 'S2', 'S3', 'SF', 'SH' }
将它转换为字符串数组的有效方法是什么,每个元素都是OTH
,REJ
等?
我目前使用String.replace()
和String.split()
完成此操作,并且也考虑使用regex-s,但是想知道是否有更简单/直观的方法
答案 0 :(得分:2)
replace
和split
中的每一个都需要迭代整个字符串,这意味着您需要迭代两次。使用Scanner
,你可以一次性完成,但是你需要使用代表非单词字符的分隔符(非A-Z
a-z
0-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();