将数组格式的字符串输入有效地转换为字符串数组

时间:2014-11-13 23:03:22

标签: java arrays string

假设一个人在下面的表格中输入了字符串:

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

将它转换为字符串数组的有效方法是什么,每个元素都是OTHREJ等?

我目前使用String.replace()String.split()完成此操作,并且也考虑使用regex-s,但是想知道是否有更简单/直观的方法

1 个答案:

答案 0 :(得分:2)

replacesplit中的每一个都需要迭代整个字符串,这意味着您需要迭代两次。使用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();