第二个空格字符后的字符串拆分

时间:2016-02-17 19:43:11

标签: java android regex

我有一个从JSOUP下载的字符串,看起来像

  

Paul Millsap Al Horford Tiago Splitter Jeff Teague Kyle Korver Thabo Sefolosha Mike Scott Shelvin Mack Kent BazemoreDennisSchröderTimHardaway Jr. Walter Tavares Justin Holiday Mike Muscala Lamar Patterson Terran Petteway

我想将它拆分成一个数组,以便在列表视图中使用,因此所需的输出将是:

  

Paul Millsap,Al Horford,Tiago Splitter,Jeff Teague,Kyle Korver,Thabo Sefolosha,Mike Scott,Shelvin Mack,Kent Bazemore,DennisSchröder,Tim Hardaway Jr.,Walter Tavares,Justin Holiday,Mike Muscala,Lamar Patterson,人族佩特韦,

我该怎么做?谢谢你的帮助。

3 个答案:

答案 0 :(得分:2)

你可以做一个基本的"分割每隔一个空格",然后检查下一个字符串,看它是否有任何表明它属于前一个字符串的东西(如句号)。如果像Jr.这样的东西有周期,如果标点符号不存在则不会起作用

答案 1 :(得分:2)

首选答案:

由于您正在解析具有漂亮表格的页面,并且您希望从特定列(也是链接的玩家名称)获取值,因此您可以轻松地执行以下操作:

String url = "http://www.spotrac.com/nba/atlanta-hawks/cap/";
Document doc = Jsoup.connect(url).get();
Elements players = doc.select("table.datatable td.player a");
for (Element player : players){
    System.out.println(player.text());
}

将:

  • 找到table标记,其中包含类datatable,然后在
  • 中找到
  • 然后从该表中我们选择td.player,它代表每个单元格td元素player
  • 最后我们想要选择这些包含a链接的单元格(因为名称是链接)

原始回答:

仅根据您问题的示例数据,您可以尝试找到OneWord[space]SecondWord(optional:[space]Jr.)

基于这个想法的代码可能如下:

String input = " Paul Millsap Al Horford Tiago Splitter Jeff Teague Kyle Korver Thabo Sefolosha Mike Scott Shelvin Mack Kent Bazemore Dennis Schröder Tim Hardaway Jr. Walter Tavares Justin Holiday Mike Muscala Lamar Patterson Terran Petteway";
Pattern p = Pattern.compile("\\w+\\s+\\w+(\\s+Jr[.])?",
        Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CHARACTER_CLASS);
Matcher m = p.matcher(input);
while (m.find()) {
    System.out.println(m.group());
}

输出:

Paul Millsap
Al Horford
Tiago Splitter
Jeff Teague
Kyle Korver
Thabo Sefolosha
Mike Scott
Shelvin Mack
Kent Bazemore
Dennis Schröder
Tim Hardaway Jr.
Walter Tavares
Justin Holiday
Mike Muscala
Lamar Patterson
Terran Petteway

答案 2 :(得分:1)

搜索两个单词,然后搜索任何第三个单词,只有它以.字符结尾:

\b(\w+ \w+\b(?: \w+\.)?)

替换为\1,regex101.com example