【问题标题】:Splitting a Java String return empty array? [duplicate]拆分Java字符串返回空数组? [复制]
【发布时间】:2013-09-01 17:23:22
【问题描述】:

我有一个类似这样的字符串

"myValue"."Folder"."FolderCentury";

我想从 dot(".") 中分割出来。我正在尝试使用以下代码:

String a = column.replace("\"", "");
String columnArray[] = a.split(".");

但是columnArray 是空的。我在这里做错了什么?

我想在这里再添加一件事,它可能的字符串数组对象将包含如下所述的吐出值,只有两个对象而不是三个。?

columnArray[0]= "myValue"."Folder";
columnArray[1]= "FolderCentury";

【问题讨论】:

  • 我已经添加了一些有问题的规范,所以它不应该看起来像重复。

标签: java split


【解决方案1】:

请注意,String#split 采用 regex

您需要转义 special char .(这意味着“任何字符”):

 String columnArray[] = a.split("\\.");

(转义正则表达式由\ 完成,但在Java 中,\ 写为\\

你也可以使用Pattern#quote:

返回指定字符串的文字模式字符串

String columnArray[] = a.split(Pattern.quote("."));

通过转义正则表达式,您告诉编译器将.视为字符串 .而不是特殊字符 ..

【讨论】:

  • 我在同一个问题中又添加了一件事,这可能吗?
  • columnArray[0]= "myValue"."Folder"; 这不会编译。
  • 是的,但字符串在 columnArray[0] 内,它会起作用我有一些更复杂的情况,这些值是如何出现的,我只想要我如何像两个字符串一样拆分它
  • 我不明白你的问题。能详细点吗?
  • 我在这里问过,看看这是否可以解释我的问题stackoverflow.com/questions/18508782/…
【解决方案2】:

您必须转义点。

String columnArray[] = a.split("\\.");

【讨论】:

    【解决方案3】:

    split() 接受正则表达式。所以你需要跳过'。不要将其视为正则表达式元字符。

    String[] columnArray = a.split("\\."); 
    

    【讨论】:

      【解决方案4】:

      在使用特殊字符时需要使用特定的转义序列。

      '.'是一个特殊字符,所以需要在 '.' 之前使用转义序列。喜欢:

       String columnArray[] = a.split("\\.");
      

      【讨论】:

        【解决方案5】:

        下一个代码:

           String input = "myValue.Folder.FolderCentury";
           String regex = "(?!(.+\\.))\\.";
           String[] result=input.split(regex);
           System.out.println(Arrays.toString(result));
        

        产生所需的输出:

        [myValue.Folder, FolderCentury]
        

        正则表达式通过负前瞻((?!) 部分)进行了一些调整,因此它只会匹配字符串上的最后一个点,其中包含多个点。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-16
          • 2019-06-13
          • 1970-01-01
          • 2018-08-15
          • 2011-11-15
          • 1970-01-01
          • 2016-08-04
          • 1970-01-01
          相关资源
          最近更新 更多