0

我有一些文字,例如:

DESC:方式 农奴制是如何在俄罗斯发展并离开俄罗斯的?
ENTY:cremat 哪些电影以大力水手道尔为主角?
DESC:manner 如何找到名人的真实姓名列表?

我逐行阅读它们,我想将每一行转换为一个string Array单词一个单词。像这样:

Array = [DESC, :, 方式, How, did, serfdom ,develop, in ,and ,then ,leave, Russia ,?]

4

8 回答 8

2
String[] arr = str.replaceAll(":"," : ").split(" ");
于 2012-12-12T15:26:05.407 回答
0

对于您的示例:

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

line您的示例行在哪里。

请注意,正则表达式中的space后面有一个。|

我建议阅读正则表达式并使用像 Expresso 这样的工具来试用它们。

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

于 2012-12-12T14:39:04.547 回答
0

字符串值 = ""; String[] 值 = value.split(" ");

这应该让您将数组按空格作为分隔符。

于 2012-12-12T14:29:05.607 回答
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]

如果您需要标点符号,我认为正则表达式无法做到这一点,因为它通过破坏匹配的字符来进行拆分。

于 2012-12-12T15:05:16.907 回答
0

您可以使用Guava 的 Splitter

Iterable<String> wordsIterable = Splitter.on(Pattern.compile("\\b")).trimResults().omitEmptyStrings().split(string);
String[] words = Iterables.toArray(wordsIterable, String.class);
于 2012-12-12T19:31:21.000 回答
0

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

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

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

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

于 2012-12-12T14:36:01.080 回答
0

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

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

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

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

于 2012-12-12T14:37:31.203 回答
0

问题是您想保留一些分隔符而不是其他分隔符(保留:并松开空格)。我认为你需要一个正则表达式来完成这个。这样的事情应该这样做:

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

这使用 Lookahead 和 Lookbehind RegEx 来查找/保留分隔符:,同时我们添加了一个正常的拆分空间( )来丢弃那些。

在此 arr 之后应该是:

arr = [DESC, :, manner, How, did, serfdom, develop, in, and, then, leave, Russia, ?]
于 2012-12-12T15:08:29.417 回答