首页 文章

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

提问于
浏览
0

我有一个文本文件,我必须阅读,有一个复杂的字符串,我必须存储到一个字符串数组 . 我已经阅读过有关正则表达式的内容,但是如果有人能够帮助我理解像这样的复杂字符串如何被分解为标记并存储在数组中

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
    • 使用分隔符拆分 String 一个或多个非单词字符(正则表达式中的 \W+
    sentence.split("\\W+")
    
    • 结果
    String sentence = "I said, \" Mr.Jones’golf 'golden' clubs were broken \".";
    String[] words = sentence.split("\\W+");
    
    System.out.println(Arrays.toString(words));
    
    /*  [I, said, Mr, Jones, golf, golden, clubs, were, broken]
    
  • 0

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

    在示例字符串中,分隔符可以是空格,逗号,点和引号 . 这些可以在很多方面堆积在一起,因此需要以[]形式的类匹配 .

    所以

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

    但是,一般情况下,您还需要将其他字符视为分隔符,例如制表符,换行符等 . 为此,有一个预定义的类\ W,它定义为除了a到z,A到Z之外的所有字符和0到9 .

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

相关问题