在Java中逐字转换String到Array

时间:2012-12-12 14:20:19

标签: java arrays string

我有一些文字:

DESC:manner How did serfdom develop in and then leave Russia ?
ENTY:cremat What films featured the character Popeye Doyle ?
DESC:manner How can I find a list of celebrities ' real names ?

我逐行阅读它们,我希望逐行将每行转换为string Array。 像这样:

  

数组= [DESC,:,方式,如何,做过,农奴制,开发,进入,然后,离开,俄罗斯,?]

8 个答案:

答案 0 :(得分:2)

String[] arr = str.replaceAll(":"," : ").split(" ");

答案 1 :(得分:0)

String value =“”; String [] values = value.split(“”);

这应该通过空格将数组作为分隔符。

答案 2 :(得分:0)

对于更全面的解决方案,您可以使用边界匹配器,如here

所述
String s = "DESC:manner How did serfdom develop in and then leave Russia ?";

String[] split = s.split("\\b");

split数组包含您要查找的内容。

答案 3 :(得分:0)

你的意思是你想把你的字符串行拆分成一个字符串数组。

有两种方便的方法可以做到这一点。

首先当然是拆分方法。你可以在j2se String类中引用这个方法。

第二个是正则表达式。你可以参考j2se正则表达式类中的信息

答案 4 :(得分:0)

对于你的例子:

String[] part = line.split(":| ");

line将是您的示例行。

请注意,正则表达式中的space之后有|

我建议您阅读正则表达式并获取Expresso等工具来试用它们。

Expresso:http://www.ultrapico.com/Expresso.htm

答案 5 :(得分:0)

如果您不介意从结果中删除标点符号,String#split("\\W")(拆分为非单词字符)会执行此操作:

// you've got this from the input parser
String inputLine = "DESC:manner How did serfdom develop in and then leave Russia ?";

String[] wordArray = inputLine.split("\\W");

这给出了:

wordArray = [DESC, manner, How, did, serfdom, develop, in, and, then, leave, Russia]

如果你需要标点符号,我认为正则表达式不会这样做,因为它通过销毁匹配的字符进行拆分。

答案 6 :(得分:0)

问题是你想要保留一些分隔符而不是其他分隔符(保持:并松开空格)。我认为你需要一个正常的表达来实现这一目标。这样的事情应该这样做:

String str = "DESC:manner How did serfdom develop in and then leave Russia ?";
String arr[] = str.split("((?<=:)|(?=:))|( )");

这会使用Lookahead和Lookbehind RegEx来查找/保留分隔符:,同时我们在空格( )的正常分割中添加/删除分隔符。{/ p>

此后应该是:

arr = [DESC, :, manner, How, did, serfdom, develop, in, and, then, leave, Russia, ?]

答案 7 :(得分:0)

您可以使用Guava's Splitter

Iterable<String> wordsIterable = Splitter.on(Pattern.compile("\\b")).trimResults().omitEmptyStrings().split(string);
String[] words = Iterables.toArray(wordsIterable, String.class);