如何将这个复杂的字符串拆分为String数组?

时间:2018-12-09 23:18:12

标签: java

我有一个必须读取的文本文件,并且必须将这个复杂的字符串存储到String数组中。我已经读过有关正则表达式的内容,但我真的很想知道是否有人可以帮助我理解诸如此类的复杂字符串如何分解为令牌并存储在数组中

String sentence = "I said, "Mr. Jones’ golf 'golden' clubs were broken"."

也许正在使用

scanner.next()

然后删除所有这些标点符号,但是我最终会怎么做呢?

最终数组我想要一个看起来像

的数组
Array words[] = {"I", "said", "Mr", "Jones", "golf", "golden", "clubs", "were", "broken"};

感谢您的帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

  1. 使用定界符一个或多个非单词字符(正则表达式中的./helloworld.clj)分割lein uberjar

    java -jar <artifact-name>.jar
  2. 结果

    String

答案 1 :(得分:0)

正则表达式的工作方式不同。在您的情况下,您将String作为输入,并希望将String []作为输出。这是一个普遍的要求,正则表达式对此有直接的支持。您只需要指定什么是令牌分隔符即可。

在示例字符串中,分隔符为空格,逗号,点和引号。这些可以通过多种方式组合在一起,因此需要以[]形式进行类匹配。

所以

String[] result = sentence.split("[ ,.\"']+");

但是,通常,您还希望将其他字符也视为分隔符,例如制表符,换行符等。为此,有一个预定义的类\ W,它定义为除a到z,A之外的所有字符。到Z和0到9。

String[] result = sentence.split("\\W+");