当前位置: 首页 > 知识库问答 >
问题:

字符串#拆分。极限参数的副作用

督弘化
2023-03-14

JDK中存在以下拆分重载签名

public String[] split(String regex, int limit)

始终我认为该限制是字符串将被拆分的最大标记数。

例如:

 System.out.println(Arrays.toString("Andrew Carnegie:35:USA".split(":")));

出局:

[Andrew Carnegie, 35, USA]
System.out.println(Arrays.toString("Andrew Carnegie:35:USA".split(":",2)));

出来

[Andrew Carnegie, 35:USA]

但我注意到1更多的效果

System.out.println(Arrays.toString("Andrew Carnegie:35:USA:".split(":")));

出局:

[Andrew Carnegie, 35, USA]

 System.out.println(Arrays.toString("Andrew Carnegie:35:USA:".split(":",-1)));

出局:

[Andrew Carnegie, 35, USA, ]

因此,如果字符串以分隔符结尾,则添加一个空元素

在哪里可以找到有关此效果的具体信息?

共有2个答案

秦才良
2023-03-14

从JavaDoc for split:

限制参数控制应用模式的次数,因此会影响生成数组的长度。如果限制n大于零,则模式最多应用n-1次,数组的长度不大于n,数组的最后一个条目将包含最后匹配分隔符之外的所有输入。如果n为非正,则模式将被应用尽可能多的次数,数组可以有任何长度。如果n为零,则模式将被应用尽可能多的次数,数组可以有任何长度,尾随的空字符串将被丢弃。

强调我的。

所以

    < li >如果< code>n严格为正数,则结果数组中的元素数将受< code>n的限制 < li >如果< code>n为零,则数组可以是任意长度,尾随空格将被丢弃 < li >如果< code>n严格为负,则数组可以具有任意长度,并且尾随空格不会被丢弃
苏富
2023-03-14

引用Johannes Wei:

“当调用String.split(String)时,它调用String.plit(String,0),当用n调用String.split(字符串,n)时,会丢弃后面的空字符串(如文档所说)

 类似资料:
  • 在这里,我打破了"。"它返回零。我不太确定极限参数它到底做了什么,但我认为这必须做些什么,因为当我传递它时,一些值答案正在改变。 期望输出- 电流输出-

  • 我有一个随机地址字符串,如 我想将其拆分为具有两个条件的字符串数组: 该字符串数组的每个元素的长度小于或等于20 字符串数组的元素没有尴尬的结尾 例如,每20个字符拆分将产生: 但正确的输出是: 注意字符串数组中的每个元素是如何小于或等于20的。 以上是我对这段代码的输出:

  • 问题 你想拆分一个字符串。 解决方案 使用 JavaScript 字符串的 split() 方法: "foo bar baz".split " " # => [ 'foo', 'bar', 'baz' ] 讨论 String 的这个 split() 方法是标准的 JavaScript 方法。可以用来基于任何分隔符——包括正则表达式来拆分字符串。这个方法还可以接受第二个参数,用于指定返回的子字符串数

  • 问题内容: 我正在尝试找到一种将String拆分为String数组的方法,并且每当遇到白色香料时就需要对其进行拆分,例如 “嗨,我是保罗” 进入” “嗨”“我”“保罗” 如何使用RegularExpression在split()方法中表示空格? 问题答案: 您需要一个正则表达式,例如,这意味着: 每当遇到至少一个空格时就进行拆分 。完整的Java代码是:

  • 问题内容: 我有一个名为的字符串,其形式像这样 。 我想使用:分隔符。 这样一来,单词将被拆分成自己的字符串,并将成为另一个字符串。 然后我只想使用2种不同的字符串来显示该字符串。 解决这个问题的最佳方法是什么? 问题答案: 你可能要删除第二个字符串的空格: 如果要用特殊字符(例如dot(。))分割字符串,则应在点之前使用转义字符\ 例: 还有其他方法可以做到这一点。例如,你可以使用类(来自):

  • 问题内容: 如何在PHP中使用定界符分割字符串?例如,如果我有字符串,我如何得到? 问题答案: 做这项工作: 您还可以直接将部分结果提取到变量中: