当前位置: 首页 > 面试题库 >

Java 1.6中String.split的行为?

雍飞雨
2023-03-14
问题内容

我的代码是:

String s = "1;;;; 23;;";
System.out.println(s.split(";").length);

并给出输出5。的源代码split是:

public String[] split(String regex) {
        return split(regex, 0);
    }

并且文档说:

该方法的工作方式就像通过调用带有给定表达式且限制参数为零的两个参数split(java.lang.String,int)方法。因此,结尾的空字符串不包括在结果数组中。

例如,字符串“ boo:and:foo”通过这些表达式产生以下结果:

Regex Result
: { "boo", "and", "foo" }
o { "b", "", ":and:f" }

如果我打印字符串,则有:

1



 23

我不应该从这样的1;;;; 23;;东西中得到{"1", "", "", "", " 23", ""}吗?


问题答案:

不,有五个是正确的,如您引用的文档所述:

因此,结尾的空字符串不包括在结果数组中。

这就是为什么省略数组末尾的空字符串的原因。如果您想要空字符串,请按照Evgeniy Dorofeev的回答所述进行操作,并指定限制为-1。



 类似资料:
  • 问题内容: 我有一个.txt文本文件,其中包含一些行。。我使用RequestBuilder对象加载了contains,并用word = String.split(“ \ n”);拆分了responseText。但我想知道,为什么结果包含“ \ n”部分。例如,我的文字: 结果是 非常感谢您的帮助。提前致谢。 问题答案: Windows回车()不应对您的结果产生明显的影响,也不必对传递给的正则表达式

  • 更新:Oracle已经确认这是一个bug。 Java Beans规范查找返回类型为void的默认setter方法,但它允许通过定制getter和setter方法。最简单的使用方法是指定getter和setter的名称。 这在JDK1.5和JDK1.6中起到了作用,即使它的返回类型不是void,也可以指定setter名称,如下面的测试用例所示: 自定义的示例允许对的编程控制,在Java Beans规

  • 我下载了最新版本的Eclipse(Mars),并在Eclipse中将所需的Java版本更改为1.6。ini文件,因为我的项目使用Java 1.6。 我将Eclipse中安装的JRE配置为使用Java 1.6。但当我尝试执行ant目标时,它会产生一个错误: 不支持低于1.7的JRE版本。 由于我目前无法升级到Java 1.7,在Mars版本中使用Java 1.6有什么解决方法吗?

  • 问题内容: 我正在尝试将String的字符拆分为String数组。我在这里找到了解决方案。 该解决方案是完美的,但是我不知道如何工作。我熟悉方法的基础知识。有人可以提供解释吗? 问题答案: 是由否定前瞻组成的正则表达式。是用于表示字符串开头的锚。匹配所有0长度的字符串,不跟在字符串的开头。换句话说,它匹配所有0长度的字符串, 但 字符串的开头 除外 。 __ 例如,在字符串中,将有3个匹配项:一个

  • 本文向大家介绍C# 中string.split用法详解,包括了C# 中string.split用法详解的使用技巧和注意事项,需要的朋友参考一下 第一种方法 输出下面的结果: ab deab deab de 第二种方法 我们看到了结果是以一个指定的字符进行的分割。使用另一种构造方法对多个字 符进行分割: 可以输出下面的结果 ab ab ab 以上所述是小编给大家介绍的C# 中string.split

  • 本文向大家介绍Java中String.split()用法小结,包括了Java中String.split()用法小结的使用技巧和注意事项,需要的朋友参考一下 在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: 1、如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用S