【问题标题】:Splitting a string by whitespaces用空格分割字符串
【发布时间】:2012-09-22 02:48:47
【问题描述】:
字符串 str = "00 01 02"; String[] 字符串 = str.split(" ");

这按预期工作。但是如果我想将 Tab 添加到列表中,它会停止工作,返回整个字符串:

String[] 字符串 = str.split("\t");

所以,像往常一样,我要求从 C# 翻译成 Java...

【问题讨论】:

  • 你想要所有的空格还是只想要空格和制表符?
  • split 方法对正则表达式进行拆分。要在多个分隔符处拆分,您可能需要使用 StringTokenizer 类对象。但是您需要使用循环来创建所需的字符串数组。

标签: java string


【解决方案1】:
String[] strings = str.split("\\s+");

【讨论】:

    【解决方案2】:

    你可以试试:

    str.split("\\s+")
    

    它将在任何空间上拆分并删除所有多余的空间。要简单地包含选项卡,请使用:

    str.split("[ \\t]")
    

    【讨论】:

    • 使用\t 而不是\\t 应该没问题。
    • @PeterLawrey 是的,如果使用了\t,那么Java 编译器将用U+0009 替换它,如果使用\\t,那么正则表达式引擎将解释为U+0009。更多信息here.
    【解决方案3】:

    String.split() 采用正则表达式:

    围绕给定正则表达式的匹配拆分此字符串。

    【讨论】:

      【解决方案4】:
      String s = "Hello this is Vivek";
      
      String[] sArr = s.split("\\s+");
      

      瞧,它完成了..!!!!!!

      【讨论】:

        【解决方案5】:

        split 方法的第一个参数是一个正则表达式。这意味着,您必须使用最适合您的正则表达式填充它。如果您在此处阅读:http://www.regular-expressions.info/reference.html,您会看到有一个最符合您要求的令牌: \s 。它匹配空格、制表符和换行符(我不知道你是否想覆盖换行符,但很有可能你需要)。

        另一个问题是:字符串应该被一个空格/制表符分割吗?当你有“00 11 2”时会发生什么?如果这是您想要的,您需要使用 +,这意味着您想用一个或多个空格/制表符分隔。

        因此,我为您提出的解决方案:

        str.split("\\s+") 
        

        【讨论】:

          猜你喜欢
          • 2014-12-13
          • 2013-08-02
          • 2023-04-02
          • 2013-10-11
          • 1970-01-01
          • 2012-04-22
          • 2020-05-16
          • 1970-01-01
          • 2012-02-14
          相关资源
          最近更新 更多