【问题标题】:which delimeter to use while spliting String拆分字符串时使用哪个分隔符
【发布时间】:2011-02-28 09:04:34
【问题描述】:

我需要在每一行中分割这个行字符串,我需要得到第三个单词(电影名称),但正如你所见,分隔符是一个大的空白字符,在某些情况下它像以前一样小末尾的数字或前面的数字大。

我尝试使用带有 (" ") 正则表达式的字符串拆分,以及 \t,但得到了超出范围的错误。

400115305   Lionel_Atwill   The_Song_of_Songs_(1933_film)   7587
400115309   Brian_Aherne    A_Night_to_Remember_(1943_film) 7952

有人遇到过同样的问题吗?

【问题讨论】:

    标签: java regex csv


    【解决方案1】:

    您是否尝试过像这样分割所有空格:line.split("\\s+")split 方法支持正则表达式。

    编辑: 抱歉,确实应该是 \\s

    以下代码

    String line = "400115305   Lionel_Atwill   The_Song_of_Songs_(1933_film)   7587";
    System.out.println(Arrays.toString(line.split("\\s+")));
    

    在我的机器上返回 [400115305, Lionel_Atwill, The_Song_of_Songs_(1933_film), 7587] (Java 6 SE)。

    【讨论】:

      【解决方案2】:

      这段代码应该可以工作。一个好的应该是s.split("\\ +");

      public class Main {
      
          /**
           * @param args the command line arguments
           */
          public static void main(String[] args) {
              String s = "400115305   Lionel_Atwill   The_Song_of_Songs_(1933_film)   7587";
              String [] s2 = s.split("\\ +");
              for (String string : s2) {
                  System.out.println("string = " + string);
              }
          }
      }
      

      【讨论】:

        【解决方案3】:

        这段代码:

        String s = "400115305   Lionel_Atwill   The_Song_of_Songs_(1933_film)   7587\r\n"
                + "400115309   Brian_Aherne    A_Night_to_Remember_(1943_film) 7952";
        
        String[] lines = s.split("\\r\\n"); // split lines
        for (String line : lines) {
            String[] items = line.split("[\\s\u00A0]+"); // split by whitespace OR  
            System.out.println("Film=" + items[2]);
        }
        

        有以下输出:

        Film=The_Song_of_Songs_(1933_film)
        Film=A_Night_to_Remember_(1943_film)
        

        【讨论】:

          【解决方案4】:

          为什么您不使用正则表达式来满足您的需要。它非常灵活,可以轻松解决您的问题。 这里有一个链接可能对你有帮助:http://www.regular-expressions.info/java.html

          【讨论】:

            【解决方案5】:

            解决方案是str.split("\\t");

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2018-02-27
              • 1970-01-01
              • 1970-01-01
              • 2018-01-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多